2011-08-30 84 views
7

我使用carrierwave和mini_magick來上傳圖片。在開發中一切都很好,但在生產中,當我嘗試上傳圖像時,它會提高FloatDomainError (Infinity)。我有幾個項目在同一臺服務器上託管,上傳時一切正常。 我使用Rails 3.0.10。 任何想法如何解決它?謝謝FloatDomainError(Infinity)

回答

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。這會導致除以0,這會導致您提到的例外。這就是爲什麼它只有一些圖像失敗的原因。

identify有一個-quiet選項來關閉這些警告消息。我在https://github.com/fschwahn/mini_magick分叉了mini_magick並添加了安靜的選項。我希望這個變化能夠被吸引(或者問題會以更加優雅的方式被修復)。但是,現在你可以通過添加以下到您的Gemfile用我的叉:

gem 'mini_magick', :git => 'git://github.com/fschwahn/mini_magick.git' 
+0

感謝您的回覆。儘快嘗試你的叉子。在當前的項目中,我開始使用rmagick來代替。 –

+1

我的更改已經完成,新版本的mini_magick已經發布,因此如果您依賴最新版本的mini_magick,問題應該消失。 – fabi

+0

謝謝。我會盡快嘗試它=) –

1

修正了用resize_and_fill替換爲resize_and_pad。仍然不明白它的奇怪行爲。

+0

實際上'resize_to_fill'和resize_and_pad'有不同的效果。用另一個替換它只是讓你的應用程序以任何價格運行的一種方式。 –

+0

同意。這是一個臨時解決方案,只是爲了使其工作。希望@ fabi的解決方案現在可以運作 –

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]