如何使用CarrierWave仅处理原始图像文件?

时间:2012-12-16 17:30:53

标签: ruby-on-rails-3 carrierwave

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

在任何"版本之外"阻止,但它只是在我的缩略图上添加两倍的水印。

1 个答案:

答案 0 :(得分:2)

您可以在上传器类中使用由CarrierWave提供的store回调

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

  before :store, :watermark_method

  def watermark_method(*args)
    # watermark it!
  end
end