Processor
Handles thumbnailing images that are uploaded.
Creates a Thumbnail object set to work on the file given. It will attempt to transform the image into one defined by target_geometry which is a "WxH"-style string. format will be inferred from the file unless specified. Thumbnail creation will raise no errors unless whiny is true (which it is, by default. If convert_options is set, the options will be appended to the convert command upon image conversion
# File lib/dm-paperclip/thumbnail.rb, line 13 def initialize file, options = {}, attachment = nil super geometry = options[:geometry] @file = file @crop = geometry[-1,1] == '#' @target_geometry = Geometry.parse geometry @current_geometry = Geometry.from_file @file @convert_options = options[:convert_options] @whiny = options[:whiny].nil? ? true : options[:whiny] @format = options[:format] @current_format = File.extname(@file.path) @basename = File.basename(@file.path, @current_format) end
Returns true if the image is meant to make use of additional convert options.
# File lib/dm-paperclip/thumbnail.rb, line 34 def convert_options? not @convert_options.blank? end
Returns true if the target_geometry is meant to crop.
# File lib/dm-paperclip/thumbnail.rb, line 29 def crop? @crop end
Performs the conversion of the file into a thumbnail. Returns the Tempfile that contains the new image.
# File lib/dm-paperclip/thumbnail.rb, line 40 def make src = @file dst = Tempfile.new([@basename, @format].compact.join(".")) dst.binmode command = "#{ File.expand_path(src.path) }[0]" #{ transformation_command } "#{ File.expand_path(dst.path) }" begin success = Paperclip.run("convert", command.gsub(/\s+/, " ")) rescue PaperclipCommandLineError raise PaperclipError, "There was an error processing the thumbnail for #{@basename}" if @whiny end dst end
Returns the command ImageMagick's convert needs to transform the image into the thumbnail.
# File lib/dm-paperclip/thumbnail.rb, line 62 def transformation_command scale, crop = @current_geometry.transformation_to(@target_geometry, crop?) trans = "-resize \"#{scale}\"" trans << " -crop \"#{crop}\" +repage" if crop trans << " #{convert_options}" if convert_options? trans end
Generated with the Darkfish Rdoc Generator 2.