画像をアップロードするには、carrierwave と mini_magick を使用します。開発中はすべて問題ありませんが、本番FloatDomainError (Infinity)
環境では画像をアップロードしようとすると発生します。同じサーバーでホストされているいくつかのプロジェクトがあり、アップロードに問題はありません。Rails 3.0.10 を使用しています。どうすれば修正できますか?ありがとう
4 に答える
私も同じ問題を抱えていました。問題はmini_magick
. 実行する画像ファイルにエラーがある場合identify
、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 をフォークし、quiet オプションを追加しました。この変更が取り入れられることを願っています (または、問題がより洗練された方法で修正されることを願っています)。ただし、今のところ、Gemfile に以下を追加することで、私のフォークを使用できます。
gem 'mini_magick', :git => 'git://github.com/fschwahn/mini_magick.git'
に置き換えresize_and_fill
て修正しましたresize_and_pad
。まだその奇妙な振る舞いを理解していません。
Ubuntu Imagemagick パッケージ バージョン 6.7 を使用していました。https://askubuntu.com/questions/267746/how-can-i-install-the-latest-upstream-version-of-imagemagick-without-compilingの手順に従って 6.8 にアップグレードしましたが、うまくいきました。
PDFファイルの画像サムネイルを生成したときに、最新のgem updateでこのエラーが発生しました。
このコードは失敗します:
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]