0

我有一组要应用于所有版本的转换。我查看了 minimagick 的 resize_and_pad 方法的源代码,如果给定的话,它看起来会产生一个块。调用“进程”时如何将该块传递给方法?

do_everything_else = proc { |img|
    img.format('jpg') do |i|
        i.quality 100
        i.antialias
        i.background :white
        i.flatten
        i.unsharp '0.3x0.3+5+0'
    end
}
version :croppable, :if => :new_upload? do
    # This results in 'too many arguments' error...
    process :resize_and_pad => [1200, 1200, 'white', 'Center', do_everything_else]
end
4

1 回答 1

1

答案是:process :resize_and_pad => [1200, 1200, 'white'] { |img| do_everything_else.call img }

不知道为什么我不能只使用process :resize_and_pad => [1200, 1200, 'white'] do_everything_else

编辑:取消它,没有任何反应!该块甚至没有运行......我在那里放了一个直接块,还放了一个“raise 'WTF'.inspect”并且没有弹出错误。我不知道是否有任何方法可以做到这一点......似乎 minimagick 方法中的 yield(img) 是无用的,因为根本无法通过使用“进程”将块传递给该方法。

于 2013-10-29T01:18:24.607 回答