使用CarrierWave给图像添加水印

3

在我的上传器内部:

version :profile do
    process :resize_to_fill => [300, 300]
    process :quality => 90
    process :watermark
  end

那么:
  def watermark
    manipulate! do |img|
      logo = Magick::Image.read("#{Rails.root}/assets/images/watermarks/watermark.png").first
      img = img.composite(logo, Magick::SouthEastGravity, Magick::OverCompositeOp)
    end
  end
  • 如果安装了ImageMagick,上述方法将不起作用。
  • 没有错误日志记录,因此非常难以调试。

  • 有没有办法调试并修复上面的代码,使其成为适用于CarrierWave的工作水印方法?


你的图片路径看起来不对 - 资源通常在app/assets中。 - Frederick Cheung
你能否请发布答案给我们? - Harsha M V
1个回答

5
哪一行代码是将结果写入磁盘的?
我认为,复合方法本身不会将结果写入磁盘。你需要调用img.write('composite.gif')(或任何你想要的文件名)来实际保存复合结果。
我想这可能是carrierwave为您完成的,但您可以通过检查文件的输出内容和/或时间戳来验证文件是否在上传后被修改了吗?
参考:http://rmagick.rubyforge.org/src_over.html - 页面中部

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接