如何使用Paperclip gem调用液体重新缩放?

时间:2011-10-13 17:16:19

标签: ruby-on-rails-3 imagemagick paperclip

我正在使用带有Rails 3.1.1应用程序的Paperclip gem。它的工作与广告和预期一样。但是,我想使用imagemagick -liquid-rescale委托。根据{{​​3}}(我在terminal.app中尝试过),这有效:

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

我试过一个变种......

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

这也按预期工作。我已经在我的图像模型中尝试了几种在我的rails应用程序中的排列,但我无法让Paperclip调用液体重新缩放。我的最新尝试是:

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

此操作失败,没有错误消息,只是使用新名称复制原始图像。

如何指示回形针调用液体重新缩放?

1 个答案:

答案 0 :(得分:0)

这就是我的所作所为。我必须编写一个自定义处理器,我将其命名为liquid。在模型中:

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

我不确定:geometry选项是否必要,但我添加了它,因为回形针中的thumbnail.rb表示它不是可选的。

然后我添加了一个文件:/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!}

这就是诀窍。