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] = [: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 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 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 !.nil? && !.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 = " \#{ source_file_options }\n \"\#{ File.expand_path(src.path) }[0]\"\n \#{ transformation_command }\n \"\#{ File.expand_path(dst.path) }\"\n end_command\n\n begin\n success = Paperclip.run(\"convert\", command.gsub(/\\s+/, \" \"))\n rescue PaperclipCommandLineError\n raise PaperclipError, \"There was an error processing the thumbnail for \#{@basename}\" if @whiny\n end\n\n dst\nend\n" |
#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 << " #{convert_options}" if trans end |