Maa*_*ten 2 ruby-on-rails rmagick imagemagick ruby-on-rails-4
在我的 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
Run Code Online (Sandbox Code Playgroud)
我收到以下错误,行上写着Image.read
:
Magick::ImageMagickError (no decode delegate for this image format `0xb9f6052c>' @ error/constitute.c/ReadImage/544):
Run Code Online (Sandbox Code Playgroud)
使用上传的 PNG 文件对此进行测试,似乎 RMagick 没有识别出临时文件是 PNG 文件。如果我读取本地存储的 PNG 文件,上面的代码确实可以工作,所以不可能是我缺少 PNG 解码器。我该如何解决这个问题以及为什么会发生这种情况?
您可以from_blob
对ActionDispatch::Http::UploadedFile
参数执行以下操作(这就是文件的传入方式):
images = Magick::Image.from_blob(params[:file].read)
Run Code Online (Sandbox Code Playgroud)