扩展paperclip 增加watermark

1. /lib/paperclip processors add watermark.rb file

2.
module Paperclip
class Watermark < Processor

class InstanceNotGiven < ArgumentError; end

def initialize(file, options = {})
super
# puts attachment.to_yaml
@file = file
@current_format = File.extname(@file.path)
@basename = File.basename(@file.path, @current_format)
@watermark = RAILS_ROOT + "/watermark/overlay.png"
@current_geometry = Geometry.from_file file # This is pretty slow
@watermark_geometry = watermark_dimensions

end

def watermark_dimensions
return @watermark_dimensions if @watermark_dimensions
@watermark_dimensions = Geometry.from_file @watermark
end

def make
dst = Tempfile.new([@basename, @format].compact.join("."))
watermark = " \\( #{@watermark} -extract #{@current_geometry.width.to_i}x#{@current_geometry.height.to_i}+#{@watermark_geometry.height.to_i / 2}+#{@watermark_geometry.width.to_i / 2} \\) "
command = "-gravity center " + watermark + File.expand_path(@file.path) + " " +File.expand_path(dst.path)
begin
success = Paperclip.run("composite", command.gsub(/\s+/, " "))
rescue PaperclipCommandLineError
raise PaperclipError, "There was an error processing the watermark for #{@basename}" if @whiny_thumbnails
end
dst
end

end
end


3. in model

class Image < ActiveRecord::Base
has_attached_file :watermark_photo,
:styles => {
:watermark => {
:geometry => "300x300>",
:processors => [:thumbnail,:watermark]
},
:thumb => {
:geometry => "100x100#"}
}

end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值