【发布时间】:2014-01-24 12:20:16
【问题描述】:
在我的 Rails 应用程序中,我有一个允许用户上传图片的表单。我的应用程序应该使用以下控制器方法调整图像大小。 (POST到这个方法,params[:file]包含上传的ActionDispatch::Http::UploadedFile:
def resize_and_store
file = params[:file]
# resize image
Magick::Image.read(file.tempfile).first
newimg = image.resize(100,100)
#etc... Store newimg
end
我在Image.read 的行上收到以下错误:
Magick::ImageMagickError (no decode delegate for this image format `0xb9f6052c>' @ error/constitute.c/ReadImage/544):
使用上传的 PNG 文件对此进行测试,RMagick 似乎没有发现临时文件是 PNG 文件。如果我读取本地存储的 PNG 文件,上面的代码 确实 工作,所以不可能是我缺少 PNG 解码器。我该如何解决这个问题以及为什么会发生这种情况?
【问题讨论】:
-
您确定这是
params[:file]中的内容吗?我只对实际上传的文件进行过操作,例如模型属性。 -
而且我相信您需要更新问题标题:将
Can更改为Can't;) -
糟糕!调试器说类型是#<:http::uploadedfile:0xb8d46cb0>,内容类型为
image/png。同样的代码对你有用吗?
标签: ruby-on-rails ruby-on-rails-4 imagemagick rmagick