アップロードされた画像に対して単純なrotate + resizeを実行するよう努めていますが、これはランドスケープ形式の場合のみです。それ以外の場合は、イメージのサイズを変更したいだけです。私はまた、バージョン名を同じに保ちながらこれをやりたいと思っています( "中"と "中回転"はありません)。これまで私は回転を行いましたが、問題は、非風景画像をアップロードした場合です。まったく仕事。美しい画像の場合にのみ機能します。これまでのところ私のコードの関連部分があります。何か案は?Carrierwaveの条件付きバージョン
-Benny
class FloorPlanPhotoUploader < CarrierWave::Uploader::Base
....
version :medium, :if => :is_landscape? do
process :rotate_cw
end
version :medium do
process :resize_and_pad => [ 260, 360, :white, 'Center']
end
def is_landscape? picture
file = (picture.is_a? CarrierWave::Storage::Fog::File) ? picture.public_url : picture.file
image = MiniMagick::Image.open(file)
image[:width] > image[:height]
end
def rotate_cw
manipulate! do |img|
img.rotate "90>"
img = yield(img) if block_given?
img
end
end
....
end
私は私が前にあることを試してみましたが、is_landscapeがで渡される画像を必要とし、それはあなたが引数としてis_landscape使用するときに発生していないようですので、それが機能しなかったと思いますバージョンではなく処理する。 プロセッサメソッドを処理するときにイメージオブジェクトにアクセスする方法はありますか? – user1282026