我使用 CarrierWave 生成版本(不同尺寸的缩略图),并在每个版本上添加水印。
我目前已设法为每个缩略图应用水印,但我想将其添加到原始图像上。
这是我尝试过的:
def watermark
manipulate! do |img|
watermark = Magick::Image.read(Rails.root.join('app/assets/images/watermark_512.png')).first
img = img.composite(watermark, Magick::CenterGravity, Magick::OverCompositeOp)
end
end
version :original do
process :watermark
end
version :thumb_512 do
process :resize_to_fit => [512, 512]
process :watermark
end
version :thumb_256 do
process :resize_to_fit => [256, 256]
process :watermark
end
但这不起作用。不过我尝试简单地添加
process :watermark
在任何“版本” block 之外,但它所做的只是在我的缩略图上添加两倍的水印。
最佳答案
您可以在 uploader 类中使用 CarrierWave 提供的 store
回调,如下所示
class SomeUploader < CarrierWave::Uploader::Base
# Your code ...
before :store, :watermark_method
def watermark_method(*args)
# watermark it!
end
end
关于ruby-on-rails-3 - 如何使用CarrierWave仅处理原始图像文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13903737/