Я работаю над тем, чтобы сделать простой поворот + изменение размера на загруженном изображении, но только в том случае, если это альбомный формат. В противном случае, я просто хочу, чтобы изображение изменилось. Я также хочу это сделать, сохраняя одно и то же имя версии (у меня нет «medium» и «medium_rotated»). Пока у меня работает поворот, но проблема в том, что я загружаю не-ландшафтное изображение, работа на всех. Он работает только для ландшафтных изображений. Вот некоторые из частей моего кода. Есть идеи?Условные версии в 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