FloatDomainError(无限)

时间:2011-08-30 03:14:40

标签: ruby-on-rails carrierwave minimagick

我使用carrierwave和mini_magick上传图片。在开发过程中一切都很好,但在生产中,当我尝试上传图像时,它会引发FloatDomainError (Infinity)。我在同一台服务器上托管了几个项目,上传一切都很顺利。 我使用Rails 3.0.10。 任何想法如何解决它?感谢

4 个答案:

答案 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]