在 Gemfile 中添加:
gem 'carrierwave-vips'
然后在 uploader 中添加:
include CarrierWave::Vips
各种 resize,version 和原来没有什么差异,这里主要说一下添加水印,也就是 watermark
process :make_watermark => Rails.root.join('film.png')
def make_watermark(watermark)
manipulate! {|img| img.composite(Vips::Image.new_from_file(watermark.to_s).gravity('south-east', img.width, img.height), :over)}
end
这里有一个小坑,Rails.root.join 返回的是一个 pathname 而不是简单地 string。mini_magick 是可以认可这种形式的,但是 vips 不行,所以需要在 new_from_file 的参数里面加上 to_s 的 method。
趟过了这个坑,一行搞定。
在 uploader 中,如果需要对图像进行相对比较复杂的处理,则需要使用到 manipulate! 方法。可以取出 image 进行操作。