Coder89
@Coder89
Software Engineer

ImageMagick: зацикливается при кропе картинки?

Всем привет! Столкнулся с проблемой при кропе изображения — зацикливается выполнение команды imagemagick.


Для тех, кто знаком с Rails и paperclip — препроцессор кропа:

module Paperclip
  class Cropper < Thumbnail
    def transformation_command
      if crop_command
        crop_command + super.join(' ').sub(/ -crop \S+/, '').split(' ') # super returns an array like this: ["-resize", "100x", "-crop", "100x100+0+0", "+repage"]
      else
        super
      end
    end

    def crop_command
      target = @attachment.instance
      if target.cropping?
        ["-crop", "#{target.crop_w}x#{target.crop_h}+#{target.crop_x}+#{target.crop_y}", "-format", "PNG"]
      end
    end
  end
end



Не могу понять почему…
  • Вопрос задан
  • 2932 просмотра
Пригласить эксперта
Ответы на вопрос 1
svetozar
@svetozar
dudin.tv
Циклит потому что:
after_update :reprocess_image, :if => :cropping?

Получается сохранение картинки в after_update заново вызывает after_update.
Чтобы избежать закцикливания можно использовать before_commit (так обновление картинки вызывается два раза, но хотя бы не бесконечность)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы