我正在复活一个已经被问到但没有实际答案的问题。
我想自动为使用 CarrierWave 上传的图像添加简单的阴影。图像处理是使用 RMagick 还是 MiniMagick 对我来说并不重要。
输入文件类型应该是 CarrierWave 的“白名单”默认值——jpg、jpeg、png 和 gif。保存的文件类型应该是 png (我认为这很有必要)。
谢谢
我正在复活一个已经被问到但没有实际答案的问题。
我想自动为使用 CarrierWave 上传的图像添加简单的阴影。图像处理是使用 RMagick 还是 MiniMagick 对我来说并不重要。
输入文件类型应该是 CarrierWave 的“白名单”默认值——jpg、jpeg、png 和 gif。保存的文件类型应该是 png (我认为这很有必要)。
谢谢
好的,想通了。也许其他人会发现这很有用。
在我的 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 方法。