Как вызвать жидкостное масштабирование с драгоценным камнем Paperclip? - PullRequest
0 голосов
/ 13 октября 2011

Я использую гем Paperclip с приложением Rails 3.1.1.Это работает, как рекламируется и ожидается.Однако я хотел бы использовать делегат imagemagick -liquid-rescale.Согласно документации imagemagick (которую я пробовал в файле Terminal.app), это работает:

convert logo_trimmed.jpg  -liquid-rescale 75x100%\!  logo_lqr.jpg

Я попробовал вариант ...

convert my_pic.jpg -liquid-rescale 60x60\! my_new_pic.jpg

Этотоже работал как положено.Я пробовал несколько перестановок в моей модели Image в моем приложении rails, но я не могу заставить Paperclip вызывать жидкостное масштабирование.Моя последняя попытка была такой:

has_attached_file :pic, :styles => {:square => "-liquid-rescale 60x60\!" }

Это не дает результата без сообщения об ошибке, просто дублируя исходное изображение с новым именем.

Как я могу дать команду скрепке для вызова жидкостного масштабирования?

1 Ответ

0 голосов
/ 14 октября 2011

Вот что я сделал. Мне пришлось написать собственный процессор, который я назвал liquid. В модели:

has_attached_file :pic, :styles => {:square => {:processors =>[:liquid],:geometry => "60x60>"} }

Я не уверен, нужен ли параметр :geometry, но я добавил его, потому что thumbnail.rb в геме paperclip говорит, что он не является обязательным.

Затем я добавил файл: /my_app/lib/paperclip_processors/liquid.rb с содержанием:

module Paperclip
    class Liquid < Thumbnail
        def transformation_command
            "-resize '60x60>' -liquid-rescale '60x60!'"
        end
    end
end

Наконец, я запустил в консоли следующее:

Image.all.each {|i| i.pic.reprocess!}

Это добилось цели.

...