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 28 29 |
# 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.
37 38 39 |
# File 'lib/paperclip/thumbnail.rb', line 37 def !@convert_options.nil? && !@convert_options.empty? end |
#crop? ⇒ Boolean
Returns true if the target_geometry
is meant to crop.
32 33 34 |
# File 'lib/paperclip/thumbnail.rb', line 32 def crop? @crop end |
#make ⇒ Object
Performs the conversion of the file
into a thumbnail. Returns the Tempfile that contains the new image.
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/paperclip/thumbnail.rb', line 43 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.
66 67 68 69 70 71 72 73 |
# File 'lib/paperclip/thumbnail.rb', line 66 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 |