Module: WatermarkFu
- Extended by:
- ActiveSupport::Concern
- Included in:
- StorageImageProcessing
- Defined in:
- app/models/concerns/watermark_fu.rb
Instance Method Summary collapse
- #build_watermarks ⇒ Object
- #create_watermark(opts = {}) ⇒ Object
- #create_watermark_canvas(opts = {}) ⇒ Object
- #has_watermark? ⇒ Boolean
- #need_watermark? ⇒ Boolean
- #put_watermark_on_base_image ⇒ Object
- #watermark_canvas_path(style = :landscape) ⇒ Object
- #watermark_dir_path ⇒ Object
- #watermark_font ⇒ Object
- #watermark_path(style = :landscape) ⇒ Object
Instance Method Details
#build_watermarks ⇒ Object
61 62 63 64 65 66 67 |
# File 'app/models/concerns/watermark_fu.rb', line 61 def build_watermarks create_watermark_canvas(type: :landscape) create_watermark_canvas(type: :portrait) create_watermark(type: :landscape) create_watermark(type: :portrait) end |
#create_watermark(opts = {}) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'app/models/concerns/watermark_fu.rb', line 40 def create_watermark opts = {} opts[:type] ||= :landscape watermark = watermark_path(opts[:type]) return false if File.exists? watermark # text params angle = opts[:type].to_sym == :landscape ? 0 : -90 rotate = "rotate #{angle}" text = TheStorages.config.watermark_text bt = "fill black #{rotate} text 0,12 '#{text}'" wt = "fill white text 1,11 '#{text}'" fs = "-font #{watermark_font} -pointsize 22" put_text = "-draw \"gravity center #{bt} #{wt}\"" wm_canvas = watermark_canvas_path(opts[:type]) Cocaine::CommandLine.new("convert", "#{wm_canvas} #{fs} #{put_text} -trim #{watermark}").run true end |
#create_watermark_canvas(opts = {}) ⇒ Object
31 32 33 34 35 36 37 38 |
# File 'app/models/concerns/watermark_fu.rb', line 31 def create_watermark_canvas opts = {} opts[:type] ||= :landscape size = opts[:type].to_sym == :landscape ? '800x50' : '50x800' wm_canvas = watermark_canvas_path(opts[:type]) return false if File.exists? wm_canvas Cocaine::CommandLine.new("convert", "-size #{size} xc:transparent #{wm_canvas}").run true end |
#has_watermark? ⇒ Boolean
8 9 10 |
# File 'app/models/concerns/watermark_fu.rb', line 8 def has_watermark? TheStorages.has_watermark? end |
#need_watermark? ⇒ Boolean
4 5 6 |
# File 'app/models/concerns/watermark_fu.rb', line 4 def need_watermark? self.watermark && has_watermark? end |
#put_watermark_on_base_image ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'app/models/concerns/watermark_fu.rb', line 69 def put_watermark_on_base_image base = path :base image = MiniMagick::Image.open base # top = north # bottom = south # right = east # left = west watermark = watermark_path position = :south x_shift = "+0" y_shift = "+10" if portrait?(image) watermark = watermark_path(:portrait) position = :east x_shift = "+10" y_shift = "+0" end stick = "-gravity #{position}" shift = "-geometry #{x_shift}#{y_shift}" opacity = "-dissolve 80%" Cocaine::CommandLine.new("composite", " #{stick} #{shift} #{opacity} #{watermark} #{base} #{base}").run base end |
#watermark_canvas_path(style = :landscape) ⇒ Object
18 19 20 |
# File 'app/models/concerns/watermark_fu.rb', line 18 def watermark_canvas_path style = :landscape "#{watermark_dir_path}/watermark_#{style}_canvas.png" end |
#watermark_dir_path ⇒ Object
12 13 14 15 16 |
# File 'app/models/concerns/watermark_fu.rb', line 12 def watermark_dir_path dir_path = TheStorages.config.watermarks_path FileUtils.mkdir_p dir_path dir_path end |
#watermark_font ⇒ Object
26 27 28 29 |
# File 'app/models/concerns/watermark_fu.rb', line 26 def watermark_font path = TheStorages.config.watermark_font_path File.exists?(path.to_s) ? path : 'Times-Roman' end |
#watermark_path(style = :landscape) ⇒ Object
22 23 24 |
# File 'app/models/concerns/watermark_fu.rb', line 22 def watermark_path style = :landscape "#{watermark_dir_path}/watermark_#{style}.png" end |