我一直在撞墙,试着弄清楚这里出了什么问题,我肯定(或者更希望)这是一个相当明显的东西,我忽略了.我使用的是Ruby 1.9.1,Sinatra 1.0和RMagick 2.13.1.ImageMagick和RMagick已正确安装并正常运行 - 我已成功操作并保存了来自irb的图像.
params数组的相关部分(为便于阅读而格式化更改):
{"admin_user_new_image_file"=>
{
:filename=>"freddie-on-shetland-pony.png",
:type=>"image/png",
:name=>"admin_user_new_image_file",
:tempfile=>#<File:/var/folders/a7/a7pO5jMcGLCww9XBGRvWfE+++TI/-Tmp-/RackMultipart20100514-20700-o2tkqu-0>,
:head=>"Content-Disposition: form-data; name=\"admin_user_new_image_file\"; filename=\"freddie-on-shetland-pony.png\"\r\nContent-Type: image/png\r\n"
}
}
Run Code Online (Sandbox Code Playgroud)
相关代码:
post "/admin/user/:account_name/image/new/" do
if params[:admin_user_new_image_file][:tempfile]
thumbnail = Magick::Image.read("png:"+params[:admin_user_new_image_file][:tempfile].path).first
end
end
Run Code Online (Sandbox Code Playgroud)
错误(第229行是以"thumbnail ="开头的行:
config.ru:229: [BUG] Segmentation fault
ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-darwin10.3.0]
-- control frame ----------
c:0042 p:---- s:0196 b:0196 l:000195 d:000195 CFUNC :read
c:0041 p:0121 s:0192 b:0192 l:001ab8 d:000191 LAMBDA config.ru:229
c:0040 p:---- s:0189 b:0189 l:000188 d:000188 FINISH
c:0039 p:---- s:0187 b:0187 l:000186 d:000186 CFUNC :call
c:0038 p:0018 …Run Code Online (Sandbox Code Playgroud) 我正在使用:
- carrierwave 0.6.0
- rails 3.2.1
- mini_magick 3.4
- ruby 1.9.2p290
Run Code Online (Sandbox Code Playgroud)
在图片上传过程中,我想调整上传图片的大小:
(image_uploader.rb)
process :resize_to_fit => [200, 200]
Run Code Online (Sandbox Code Playgroud)
但图片上传后我遇到了一个错误:
1 error prohibited this organization from being saved:
Image image Failed to manipulate with MiniMagick, maybe it is not an image? Original Error: MiniMagick::Invalid
Run Code Online (Sandbox Code Playgroud)
PS.如果我没有调整大小,图像上传工作正常.
PS2.我试着添加config/environment.rb:
require 'rubygems'
require "mini_magick"
Run Code Online (Sandbox Code Playgroud)
但没有成功(仍然没有工作 - 顺便说一下.当使用mini_magick作为宝石时是否需要?)
在我的Rails应用程序中,我刚删除Rmagick并添加Minimagick.Rmagick太重了.Rmagick的情况很好但是在minimagick中我得到以下错误:
MiniMagick::Invalid: `identify /tmp/mini_magick20150518-10411-1qz42x8` failed with error:
identify.im6: no decode delegate for this image format `/tmp/mini_magick20150518-10411-1qz42x8' @ error/constitute.c/ReadImage/544.
from /home/pubudu/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/mini_magick-4.2.4/lib/mini_magick/image.rb:200:in `rescue in validate!'
Run Code Online (Sandbox Code Playgroud)
文件网址:
[8] pry(main)> file.file.file
=> "/home/pubudu/Projects/istockseller/public/store/photos/thpubs/istockseller-13642162-wallhaven-61582.jpg"
Run Code Online (Sandbox Code Playgroud)
我试图运行的代码:
MiniMagick::Image.read(file.file.file).first
Run Code Online (Sandbox Code Playgroud) Imagemagick和mini_magick gem都已安装,但我上传pdf时无法保存模型.
在尝试创建模型的新实例时,我收到以下错误:
Pdf Failed to manipulate with MiniMagick, maybe it is not an image?
我在这做错了什么?我的意图是使用以下所示的解决方案:http://afreshcup.com/home/2012/9/27/thumbnailing-pdfs-with-minimagick.html
我的上传者:
class PrivatePdfUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
def default_url
"/images/fallback/" + [version_name, "default.png"].compact.join('_')
end
version :web_thumb do
process :thumbnail_pdf
end
def thumbnail_pdf
manipulate! do |img|
img.format("png", 1)
img.resize("150x150")
img = yield(img) if block_given?
img
end
end
end
Run Code Online (Sandbox Code Playgroud)