Files

Paperclip::Thumbnail

Handles thumbnailing images that are uploaded.

Attributes

convert_options[RW]
current_geometry[RW]
format[RW]
target_geometry[RW]
whiny[RW]

Public Class Methods

new(file, options = {}) click to toggle source

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

Public Instance Methods

convert_options?() click to toggle source

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
crop?() click to toggle source

Returns true if the target_geometry is meant to crop.

# File lib/dm-paperclip/thumbnail.rb, line 29
def crop?
  @crop
end
make() click to toggle source

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
transformation_command() click to toggle source

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

[Validate]

Generated with the Darkfish Rdoc Generator 2.