Class: Paperclip::Thumbnail
- Inherits:
-
Object
- Object
- Paperclip::Thumbnail
- Defined in:
- lib/paperclip/thumbnail.rb
Overview
Handles thumbnailing images that are uploaded.
Instance Attribute Summary collapse
-
#current_geometry ⇒ Object
Returns the value of attribute current_geometry.
-
#file ⇒ Object
Returns the value of attribute file.
-
#format ⇒ Object
Returns the value of attribute format.
-
#target_geometry ⇒ Object
Returns the value of attribute target_geometry.
-
#whiny_thumbnails ⇒ Object
Returns the value of attribute whiny_thumbnails.
Class Method Summary collapse
-
.make(file, dimensions, format = nil, whiny_thumbnails = true) ⇒ Object
Creates a thumbnail, as specified in
initialize
, makes it, and returns the resulting Tempfile.
Instance Method Summary collapse
-
#crop? ⇒ Boolean
Returns true if the
target_geometry
is meant to crop. -
#initialize(file, target_geometry, format = nil, whiny_thumbnails = true) ⇒ 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.
Constructor Details
#initialize(file, target_geometry, format = nil, whiny_thumbnails = true) ⇒ 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_thumbnails
is true (which it is, by default.
12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/paperclip/thumbnail.rb', line 12 def initialize file, target_geometry, format = nil, whiny_thumbnails = true @file = file @crop = target_geometry[-1,1] == '#' @target_geometry = Geometry.parse target_geometry @current_geometry = Geometry.from_file file @whiny_thumbnails = whiny_thumbnails @current_format = File.extname(@file.path) @basename = File.basename(@file.path, @current_format) @format = format end |
Instance Attribute Details
#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 |
#file ⇒ Object
Returns the value of attribute file.
5 6 7 |
# File 'lib/paperclip/thumbnail.rb', line 5 def file @file 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_thumbnails ⇒ Object
Returns the value of attribute whiny_thumbnails.
5 6 7 |
# File 'lib/paperclip/thumbnail.rb', line 5 def whiny_thumbnails @whiny_thumbnails end |
Class Method Details
.make(file, dimensions, format = nil, whiny_thumbnails = true) ⇒ Object
Creates a thumbnail, as specified in initialize
, makes it, and returns the resulting Tempfile.
27 28 29 |
# File 'lib/paperclip/thumbnail.rb', line 27 def self.make file, dimensions, format = nil, whiny_thumbnails = true new(file, dimensions, format, whiny_thumbnails).make end |
Instance Method Details
#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.
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/paperclip/thumbnail.rb', line 38 def make src = @file dst = Tempfile.new([@basename, @format].compact.join(".")) dst.binmode command = <<-end_command #{ Paperclip.path_for_command('convert') } "#{ File.(src.path) }" #{ transformation_command } "#{ File.(dst.path) }" end_command success = system(command.gsub(/\s+/, " ")) if success && $?.exitstatus != 0 && @whiny_thumbnails raise PaperclipError, "There was an error processing this thumbnail" end dst end |
#transformation_command ⇒ Object
Returns the command ImageMagick’s convert
needs to transform the image into the thumbnail.
60 61 62 63 64 65 |
# File 'lib/paperclip/thumbnail.rb', line 60 def transformation_command scale, crop = @current_geometry.transformation_to(@target_geometry, crop?) trans = "-scale \"#{scale}\"" trans << " -crop \"#{crop}\" +repage" if crop trans end |