2

我使用 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

在任何“版本”块之外,但它所做的只是在我的缩略图上添加两倍的水印。

4

1 回答 1

2

您可以store像这样在上传程序类中使用 CarrierWave 提供的回调

class SomeUploader < CarrierWave::Uploader::Base
  # Your code ...

  before :store, :watermark_method

  def watermark_method(*args)
    # watermark it!
  end
end
于 2012-12-16T21:12:17.993 回答