我使用carrierwave 和mini_magick 上传图片。在开发中一切都很好,但是在生产中,FloatDomainError (Infinity)
当我尝试上传图像时它会出现。我有几个项目托管在同一台服务器上,上传一切都很好。我使用 Rails 3.0.10。任何想法我该如何解决?谢谢
4 回答
我有同样的问题。问题是mini_magick
。如果它运行的图像文件identify
是错误的,则 identify 会输出某种错误,例如
identify: Corrupt JPEG data: 7929 extraneous bytes before marker 0xed `image.jpg' @ warning/jpeg.c/EmitMessage/230.
11811 8665
mini_magick
尝试将错误消息解析为维度,结果为0
. 这会导致除以零,从而导致您提到的异常。这就是为什么它只在某些图像上失败的原因。
identify
可以-quiet
选择关闭这些警告消息。我在https://github.com/fschwahn/mini_magick分叉了 mini_magick并添加了 quiet 选项。我希望这种改变会被引入(或者问题会以更优雅的方式得到解决)。但是,现在您可以通过将以下内容添加到 Gemfile 来使用我的 fork:
gem 'mini_magick', :git => 'git://github.com/fschwahn/mini_magick.git'
通过替换resize_and_fill
为修复了该问题resize_and_pad
。仍然不明白它的奇怪行为。
我使用的是 Ubuntu Imagemagick 软件包版本 6.7。我按照此处的说明升级到 6.8:https ://askubuntu.com/questions/267746/how-can-i-install-the-latest-upstream-version-of-imagemagick-without-compiling并且它有效。
当我为我的 pdf 文件生成图像缩略图时,我在最新的 gem 更新时遇到了这个错误。
此代码失败:
version :thumb do
process :resize_to_fill => [260, 192]
process :convert => :png
process :set_content_type
process :thumbnail_pdf
end
我通过替换行的顺序来解决它。关键是在调整大小之前MiniMagic
应该先将缩略图转换为图像,然后再尝试调整大小。
这是对我有用的解决方案。也许它会对某人有所帮助。
process :convert => :png
process :resize_to_fill => [260, 192]