我使用carrierwave和mini_magick来上传图片。在开发中一切都很好,但在生产中,当我尝试上传图像时,它会提高FloatDomainError (Infinity)
。我有几个项目在同一台服务器上托管,上传时一切正常。 我使用Rails 3.0.10。 任何想法如何解决它?谢谢FloatDomainError(Infinity)
回答
我有同样的问题。问题是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
。这会导致除以0,这会导致您提到的例外。这就是为什么它只有一些图像失败的原因。
identify
有一个-quiet
选项来关闭这些警告消息。我在https://github.com/fschwahn/mini_magick分叉了mini_magick并添加了安静的选项。我希望这个变化能够被吸引(或者问题会以更加优雅的方式被修复)。但是,现在你可以通过添加以下到您的Gemfile用我的叉:
gem 'mini_magick', :git => 'git://github.com/fschwahn/mini_magick.git'
修正了用resize_and_fill
替换为resize_and_pad
。仍然不明白它的奇怪行为。
实际上'resize_to_fill'和resize_and_pad'有不同的效果。用另一个替换它只是让你的应用程序以任何价格运行的一种方式。 –
同意。这是一个临时解决方案,只是为了使其工作。希望@ fabi的解决方案现在可以运作 –
我用的是Ubuntu的ImageMagick软件包6.7版。我按照这里的说明升级到6.8:https://askubuntu.com/questions/267746/how-can-i-install-the-latest-upstream-version-of-imagemagick-without-compiling,它工作。
我得到了这个错误,最新的宝石更新,当我生成我的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]
- 1. 为什么Infinity-Infinity NaN?
- 2. Postgres中-Infinity&Infinity的合适值
- 3. “VisualTreeHelper.GetDescendantBounds()”返回Infinity
- 4. Infinity vs Number.POSITIVE_INFINITY
- 5. Wordpress Image Crop Infinity
- 6. C++ gamma_distribution returns infinity
- 7. Math.pow和Infinity
- 8. Minitest:测试Infinity
- 9. Infinity vs. mantl
- 10. Javascript Infinity add and multiply
- 11. AngularJS Infinity Digest with $ http.get
- 12. 为什么infinity = 0x3f3f3f3f?
- 13. 为什么JavaScript中的“Infinity == Infinity”成为现实?
- 14. VB6如何用+ infinity,-infinity和NaN初始化双精度?
- 15. 如何在ANSI C中生成NaN,-Infinity和+ Infinity?
- 16. 用NAN,INFINITY和-INFINITY分类的C中的气泡
- 17. 的OpenLayers 3新ol.Vector返回[无限,无穷远,-Infinity,-Infinity]
- 18. Infinity的Java异常处理
- 19. C#ExecuteScalar() - 必须小于Infinity?
- 20. Infinity为什么是数字?
- 21. css Infinity如何工作?
- 22. 为什么(Infinity | 0)=== 0?
- 23. 何时使用NaN或+/- Infinity?
- 24. Infinity Scroll Android和Laravel 5.2
- 25. ejabberd registration_timeout infinity不起作用
- 26. java中的Infinity Time值?
- 27. Laravel 5 infinity滚动div
- 28. Three.js Vector.project()给出的值Infinity?
- 29. “isNaN(INFINITY)==假”是假的
- 30. Infinity Scroll和UITableView Data Reload
感谢您的回复。尽快尝试你的叉子。在当前的项目中,我开始使用rmagick来代替。 –
我的更改已经完成,新版本的mini_magick已经发布,因此如果您依赖最新版本的mini_magick,问题应该消失。 – fabi
谢谢。我会尽快尝试它=) –