ruby-on-rails-3 - 如何使用CarrierWave仅处理原始图像文件?

标签 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

在任何“版本” 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/

相关文章:

ruby-on-rails-3 - Carrierwave/Minimagick - 裁剪总是不准确,除非 'y' 参数为 0

ruby-on-rails - 图片上传后压缩

ruby-on-rails - Carrierwave:在非ActiveRecord继承类中挂载Uploader

ruby-on-rails - 如何从 S3 获取文件大小和类型?

ruby-on-rails - Rails 3.2 流媒体

ruby-on-rails - 无法在生产中 bundle

ruby-on-rails - 如何从 carrierwave 中的 id 和 name 中查找 url

ruby-on-rails - 将缩略图链接到原始图像时未定义的方法 'to_model'

sql - Rails 3 与 PostgreSQL : Problem with 'update_all' in joined table

ruby-on-rails - 如何修复 [unixODBC][Driver Manager] 未找到数据源名称且未指定默认驱动程序 (ODBC::Error)