我使用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
謝謝。我會盡快嘗試它=) –