ruby - RMagick - ImageMagick 给出错误 "no decode delegate for this image format"

标签 ruby imagemagick rmagick

当我尝试操作从 sinatra 上传的图像时出现问题。

File.open(params[:file][:tempfile]) do |p|
   thumb = Magick::Image.read(p)
   thumb.crop_resized!(75, 75, Magick::NorthGravity)
end

上传的文件是jpeg,上传图片时的表单数据包括

{:filename=>"299732_176749115737355_100002068035867_380115_618512842_n.jpg",    :type=>"image/jpeg", :name=>"file", :tempfile=>#<File:/var/folders/hf/d6vx6vg56nbd5n44jjrp84k80000gn/T/RackMultipart20120228-55947-1fd2l6c>, :head=>"Content-Disposition: form-data; name=\"file\"; filename=\"299732_176749115737355_100002068035867_380115_618512842_n.jpg\"\r\nContent-Type: image/jpeg\r\n"}

而且 ImageMagick 也有必要的代表

convert -list configure

返回

DELEGATES     bzlib freetype jpeg jng jp2 lcms png tiff x11 xml zlib

所以,我应该能够上传和转换 jpeg,但它提示代表。 我也在 Mac OSX 10.7 上工作,可能是 mac 的另一个奇怪问题

最佳答案

我找到了适合我的解决方案:

tmpfile = params[:file][:tempfile]
image = Magick::ImageList.new
bin = File.open(tmpfile, 'r'){ |file| file.read }
img = image.from_blob(bin)

我想问题的发生是因为 rmagick 试图通过文件扩展名定义图像类型。但是上传的文件没有扩展名。 祝你好运!

关于ruby - RMagick - ImageMagick 给出错误 "no decode delegate for this image format",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9479960/

相关文章:

ruby - 将 HTML 转换为纯文本(包含 <br>s)

ruby - 在标准类访问器中初始化 self 的值

ruby-on-rails - 设计:注册 Rails 4 后自定义字段未保存

imagemagick - 动画gif的ImageMagick和透明背景

ruby-on-rails - rails 在生产服务器中包含 CarrierWave::RMagick 错误

ruby-on-rails - Rails ajax 表单提交消息

pdf - Imagemagick 将 2 个生成的 PDF 合并为 1 个多页文件

ruby-on-rails - Rmagick SVG 转换不同于 ImageMagick

ruby - RMagick 无法打开图像

ruby - 如何处理 RMagick 在 Ruby 中的内存泄漏?