問題
RailsでCarrierwaveとMiniMagickを使った画像のりサイズ、圧縮処理をしています。
しかし、リサイズした際に画像が破損してしまいます。
オリジナル画像のリサイズ時に破損しているらしくサムネ画像も同じように破損しています。
下記の記事のように破損するとあるのですが、バージョン等が記載していないので、
この現象は未解決バグなのかわかりません。
どなたか情報をお持ちでしたら共有お願いいたします。
別名にて保存するとリサイズに成功するのですが、既に運用しているシステムの改修のためファイル名の規則を変更することができません。
リサイズし上書き保存できる方法はないでしょうか?
該当のソースコード
Ruby
1class ImageUploader < CarrierWave::Uploader::Base 2 include CarrierWave::MiniMagick 3 4 # 画像が破損する 5 process resize_to_limit: [2560, 1920] 6 7 # 破損したサムネ画像が生成される 8 version :thumb do 9 process resize_to_fit: [200, 200] 10 end 11end
試したこと
1.MiniMagickのみをincludeしたRubyスクリプトを作成した場合は同名でリサイズすることができました。
ruby
1include 'mini_magick' 2img = MiniMagick::Image.open('image.jpg') 3img.resize('2560x1980') 4image.write('image.jpg') # 成功
2.Carrierwaveでリサイズせずにmount_uploaderを追記したmodelのbefore_actionでリサイズした場合、サムネ画像は正常にリサイズすることができましたが、オリジナル画像は破損してしまいました。
またデバッグを使用して処理を追っていると/public/upload/tmp/~/image.jpgのは正常にリサイズできていることを確認しました。
(Carrierwaveのアップロードで破損している?)
Ruby
1class Image < ApplicationRecord 2 mount_uploader :image, ImageUploader 3 4 before_action do 5 self.image.resize_to_limit(2560, 1980) 6 # /public/upload/tmp/~/image.jpgはリサイズ成功 7 # アップロード後の/public/upload/Image/image/1/image.jpgは画像が破損 8 end 9end
補足情報(FW/ツールのバージョンなど)
ミドルウェア | バージョン |
---|---|
Ruby | 2.4.1 |
Rails | 5.2.1 |
Carrierwave | 1.2.3 |
MiniMagick | 4.9.2 |
ImageMagick | 6.7.8-9 |
あなたの回答
tips
プレビュー