1

我正在复活一个已经被问到但没有实际答案的问题。

我想自动为使用 CarrierWave 上传的图像添加简单的阴影。图像处理是使用 RMagick 还是 MiniMagick 对我来说并不重要。

输入文件类型应该是 CarrierWave 的“白名单”默认值——jpg、jpeg、png 和 gif。保存的文件类型应该是 png (我认为这很有必要)。

谢谢

4

1 回答 1

2

好的,想通了。也许其他人会发现这很有用。

在我的 CarrierWave Uploader 中,相关位:

include CarrierWave::RMagick

process :shadow

def shadow
  manipulate! do |img|
    layers = Magick::ImageList.new
    image = Magick::Image.read(img.filename).first
    shadow = image.clone
    shadow = shadow.shadow(0, 0, 4.0, 0.5)
    shadow = shadow.colorize(1.0, 1.0, 1.0, 'gray25')
    layers << shadow << image
    result = layers.optimize_layers(Magick::MergeLayer)
  end
end

我让 RMagick 工作的关键是使用 optimize_layers 方法。

于 2011-07-07T16:14:44.227 回答