如何使用CarrierWave仅处理原始图像文件? [英] How to process only on original image file using CarrierWave?

查看:57
本文介绍了如何使用CarrierWave仅处理原始图像文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用CarrierWave生成版本(具有不同大小的缩略图),并在每个版本上添加水印。

I use CarrierWave to generate versions (thumbnails with different sizes) and also to add a watermark on each versions.

我目前设法为每个版本应用水印。缩略图,但我想将其添加到原始图像上。

I have currently manage to apply the watermark for each thumbnails but I would like to add it on the original image to.

这是我尝试的操作:

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

但这不是工作。但是我试图简单地添加

But this does not work. However I tried to simply add

process :watermark

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

outside any "version" block but all it does is adding twice the watermark on my thumbnails.

推荐答案

您可以在上载器类中使用CarrierWave提供的 store 回调,例如

You can use store callbacks provided by CarrierWave in your uploader class like this

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

  before :store, :watermark_method

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

这篇关于如何使用CarrierWave仅处理原始图像文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆