class Paperclip::Watermark
Public Class Methods
new(file, options = {}, attachment = nil)
click to toggle source
Calls superclass method
# File lib/paperclip/watermark.rb, line 6 def initialize(file, options = {}, attachment = nil) super @file = file @whiny = options.fetch(:whiny, true) @watermark_path = options[:watermark_path] @dissolve = options.fetch(:watermark_dissolve, 30) @position = options[:watermark_position] @distance_from_top = options[:watermark_distance_from_top] raise Paperclip::Error.new('Position or distance from top required') if @position.nil? && @distance_from_top.nil? raise Paperclip::Error.new('Missing watermark path') if @watermark_path.nil? end
Public Instance Methods
composition_options(destination_path)
click to toggle source
# File lib/paperclip/watermark.rb, line 29 def composition_options(destination_path) options = [] options << "-dissolve #{@dissolve}%" options << '-quality 100' options << watermak_position options << watermark_command options << @file.path options << destination_path options.join(' ') end
make()
click to toggle source
# File lib/paperclip/watermark.rb, line 19 def make destination = Tempfile.new([file_basename, current_format ? ".#{current_format}" : '']) destination.binmode Paperclip.run('composite', composition_options(destination.path)) destination rescue Paperclip::Errors::CommandNotFoundError raise Paperclip::Errors::CommandNotFoundError, "There was an error processing the watermark for #{@file.path}" if @whiny end
scaled_size_for_watermark()
click to toggle source
# File lib/paperclip/watermark.rb, line 58 def scaled_size_for_watermark destination_width = file_size.width - 20 calculated_height = watermark_size.height.to_f / watermark_size.width.to_f * destination_width.to_f Paperclip::Geometry.new(destination_width, calculated_height.to_i) end
watermak_position()
click to toggle source
# File lib/paperclip/watermark.rb, line 40 def watermak_position if @position "-gravity #{@position}" else "-geometry +#{calculated_watermak_position.first}+#{calculated_watermak_position.last}" end end
watermark_command()
click to toggle source
# File lib/paperclip/watermark.rb, line 48 def watermark_command options = [] options << '\\(' options << @watermark_path options << '-resize' options << "#{scaled_size_for_watermark.width}x#{scaled_size_for_watermark.height}" options << '\\)' options.join(' ') end
Private Instance Methods
calculated_watermak_position()
click to toggle source
# File lib/paperclip/watermark.rb, line 82 def calculated_watermak_position top = ((file_size.height - scaled_size_for_watermark.height)/100) * @distance_from_top left = (file_size.width - scaled_size_for_watermark.width)/2 [left, top] end
current_format()
click to toggle source
# File lib/paperclip/watermark.rb, line 78 def current_format File.extname(@file.path) end
file_basename()
click to toggle source
# File lib/paperclip/watermark.rb, line 74 def file_basename File.basename(@file.path, current_format) end
file_size()
click to toggle source
# File lib/paperclip/watermark.rb, line 70 def file_size @file_size ||= Paperclip::Geometry.from_file(@file.path) end
watermark_size()
click to toggle source
# File lib/paperclip/watermark.rb, line 66 def watermark_size @watermark_size ||= Paperclip::Geometry.from_file(@watermark_path) end