我使用carrierwave和mini_magick上传图片。在开发过程中一切都很好,但在生产中,当我尝试上传图像时,它会引发FloatDomainError (Infinity)
。我在同一台服务器上托管了几个项目,上传一切都很顺利。
我使用Rails 3.0.10。
任何想法如何解决它?感谢
答案 0 :(得分:10)
我遇到了同样的问题。问题是mini_magick
。如果运行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并添加了安静的选项。我希望这个改变会被拉入(或者问题将以更优雅的方式解决)。但是,现在您可以通过在Gemfile中添加以下内容来使用我的fork:
gem 'mini_magick', :git => 'git://github.com/fschwahn/mini_magick.git'
答案 1 :(得分:1)
修复了将resize_and_fill
替换为resize_and_pad
的问题。仍然不明白它的奇怪行为。
答案 2 :(得分:1)
我使用的是Ubuntu Imagemagick软件包6.7版。我按照此处的说明升级到6.8:https://askubuntu.com/questions/267746/how-can-i-install-the-latest-upstream-version-of-imagemagick-without-compiling并且它有效。
答案 3 :(得分:0)
当我为我的pdf文件生成图像缩略图时,我的最新宝石更新出现此错误。
此代码失败:
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]