Class: Paperclip::Thumbnail
- Defined in:
- lib/paperclip/thumbnail.rb
Overview
Handles thumbnailing images that are uploaded.
Instance Attribute Summary collapse
-
#convert_options ⇒ Object
Returns the value of attribute convert_options.
-
#current_geometry ⇒ Object
Returns the value of attribute current_geometry.
-
#format ⇒ Object
Returns the value of attribute format.
-
#source_file_options ⇒ Object
Returns the value of attribute source_file_options.
-
#target_geometry ⇒ Object
Returns the value of attribute target_geometry.
-
#whiny ⇒ Object
Returns the value of attribute whiny.
Attributes inherited from Processor
Instance Method Summary collapse
-
#convert_options? ⇒ Boolean
Returns true if the image is meant to make use of additional convert options.
-
#crop? ⇒ Boolean
Returns true if the
target_geometry
is meant to crop. -
#initialize(file, options = {}, attachment = nil) ⇒ Thumbnail
constructor
Creates a Thumbnail object set to work on the
file
given. -
#make ⇒ Object
Performs the conversion of the
file
into a thumbnail. -
#transformation_command ⇒ Object
Returns the command ImageMagick’s
convert
needs to transform the image into the thumbnail.
Methods inherited from Processor
Constructor Details
#initialize(file, options = {}, attachment = nil) ⇒ Thumbnail
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
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/paperclip/thumbnail.rb', line 13 def initialize file, = {}, = nil super geometry = [:geometry] @file = file @crop = geometry[-1,1] == '#' @target_geometry = Geometry.parse geometry @current_geometry = Geometry.from_file @file @source_file_options = [:source_file_options] @convert_options = [:convert_options] @whiny = [:whiny].nil? ? true : [:whiny] @format = [:format] @current_format = File.extname(@file.path) @basename = File.basename(@file.path, @current_format) end |
Instance Attribute Details
#convert_options ⇒ Object
Returns the value of attribute convert_options.
5 6 7 |
# File 'lib/paperclip/thumbnail.rb', line 5 def @convert_options end |
#current_geometry ⇒ Object
Returns the value of attribute current_geometry.
5 6 7 |
# File 'lib/paperclip/thumbnail.rb', line 5 def current_geometry @current_geometry end |
#format ⇒ Object
Returns the value of attribute format.
5 6 7 |
# File 'lib/paperclip/thumbnail.rb', line 5 def format @format end |
#source_file_options ⇒ Object
Returns the value of attribute source_file_options.
5 6 7 |
# File 'lib/paperclip/thumbnail.rb', line 5 def @source_file_options end |
#target_geometry ⇒ Object
Returns the value of attribute target_geometry.
5 6 7 |
# File 'lib/paperclip/thumbnail.rb', line 5 def target_geometry @target_geometry end |
#whiny ⇒ Object
Returns the value of attribute whiny.
5 6 7 |
# File 'lib/paperclip/thumbnail.rb', line 5 def whiny @whiny end |
Instance Method Details
#convert_options? ⇒ Boolean
Returns true if the image is meant to make use of additional convert options.
35 36 37 |
# File 'lib/paperclip/thumbnail.rb', line 35 def !@convert_options.nil? && !@convert_options.empty? end |
#crop? ⇒ Boolean
Returns true if the target_geometry
is meant to crop.
30 31 32 |
# File 'lib/paperclip/thumbnail.rb', line 30 def crop? @crop end |
#make ⇒ Object
Performs the conversion of the file
into a thumbnail. Returns the Tempfile that contains the new image.
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/paperclip/thumbnail.rb', line 41 def make src = @file dst = Tempfile.new([@basename, @format].compact.join(".")) dst.binmode command = <<-end_command #{ } "#{ File.(src.path) }[0]" #{ transformation_command } "#{ File.(dst.path) }" end_command 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 ⇒ Object
Returns the command ImageMagick’s convert
needs to transform the image into the thumbnail.
64 65 66 67 68 69 70 71 |
# File 'lib/paperclip/thumbnail.rb', line 64 def transformation_command scale, crop = @current_geometry.transformation_to(@target_geometry, crop?) trans = "" trans << " -resize \"#{scale}\"" unless scale.nil? || scale.empty? trans << " -crop \"#{crop}\" +repage" if crop trans << " #{}" if trans end |