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.
-
#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 |
# 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 @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 |
#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.
34 35 36 |
# File 'lib/paperclip/thumbnail.rb', line 34 def not @convert_options.blank? end |
#crop? ⇒ Boolean
Returns true if the target_geometry
is meant to crop.
29 30 31 |
# File 'lib/paperclip/thumbnail.rb', line 29 def crop? @crop end |
#make ⇒ Object
Performs the conversion of the file
into a thumbnail. Returns the Tempfile that contains the new image.
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/paperclip/thumbnail.rb', line 40 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.
62 63 64 65 66 67 68 |
# File 'lib/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 << " #{}" if trans end |