Class: Paperclip::Geometry
- Inherits:
 - 
      Object
      
        
- Object
 - Paperclip::Geometry
 
 
- Defined in:
 - lib/paperclip/geometry.rb
 
Overview
Defines the geometry of an image.
Instance Attribute Summary collapse
- 
  
    
      #height  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    
Returns the value of attribute height.
 - 
  
    
      #modifier  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    
Returns the value of attribute modifier.
 - 
  
    
      #width  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    
Returns the value of attribute width.
 
Class Method Summary collapse
- 
  
    
      .from_file(file)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Uses ImageMagick to determing the dimensions of a file, passed in as either a File or path.
 - 
  
    
      .parse(string)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Parses a “WxH” formatted string, where W is the width and H is the height.
 
Instance Method Summary collapse
- 
  
    
      #aspect  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
The aspect ratio of the dimensions.
 - 
  
    
      #horizontal?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
True if the dimensions represent a horizontal rectangle.
 - 
  
    
      #initialize(width = nil, height = nil, modifier = nil)  ⇒ Geometry 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
Gives a Geometry representing the given height and width.
 - 
  
    
      #inspect  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Same as to_s.
 - 
  
    
      #larger  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns the larger of the two dimensions.
 - 
  
    
      #smaller  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns the smaller of the two dimensions.
 - 
  
    
      #square?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
True if the dimensions represent a square.
 - 
  
    
      #to_s  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns the width and height in a format suitable to be passed to Geometry.parse.
 - 
  
    
      #transformation_to(dst, crop = false)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns the scaling and cropping geometries (in string-based ImageMagick format) neccessary to transform this Geometry into the Geometry given.
 - 
  
    
      #vertical?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
True if the dimensions represent a vertical rectangle.
 
Constructor Details
#initialize(width = nil, height = nil, modifier = nil) ⇒ Geometry
Gives a Geometry representing the given height and width
      8 9 10 11 12  | 
    
      # File 'lib/paperclip/geometry.rb', line 8 def initialize width = nil, height = nil, modifier = nil @height = height.to_f @width = width.to_f @modifier = modifier end  | 
  
Instance Attribute Details
#height ⇒ Object
Returns the value of attribute height.
      5 6 7  | 
    
      # File 'lib/paperclip/geometry.rb', line 5 def height @height end  | 
  
#modifier ⇒ Object
Returns the value of attribute modifier.
      5 6 7  | 
    
      # File 'lib/paperclip/geometry.rb', line 5 def modifier @modifier end  | 
  
#width ⇒ Object
Returns the value of attribute width.
      5 6 7  | 
    
      # File 'lib/paperclip/geometry.rb', line 5 def width @width end  | 
  
Class Method Details
.from_file(file) ⇒ Object
Uses ImageMagick to determing the dimensions of a file, passed in as either a File or path.
      16 17 18 19 20 21 22 23 24 25 26 27 28  | 
    
      # File 'lib/paperclip/geometry.rb', line 16 def self.from_file file file = file.path if file.respond_to? "path" raise(Paperclip::NotIdentifiedByImageMagickError.new("Cannot find the geometry of a file with a blank name")) if file.blank? geometry = begin Paperclip.run("identify", "-format %wx%h :file", :file => "#{file}[0]") rescue Cocaine::ExitStatusError "" rescue Cocaine::CommandNotFoundError => e raise Paperclip::CommandNotFoundError.new("Could not run the `identify` command. Please install ImageMagick.") end parse(geometry) || raise(NotIdentifiedByImageMagickError.new("#{file} is not recognized by the 'identify' command.")) end  | 
  
Instance Method Details
#aspect ⇒ Object
The aspect ratio of the dimensions.
      53 54 55  | 
    
      # File 'lib/paperclip/geometry.rb', line 53 def aspect width / height end  | 
  
#horizontal? ⇒ Boolean
True if the dimensions represent a horizontal rectangle
      43 44 45  | 
    
      # File 'lib/paperclip/geometry.rb', line 43 def horizontal? height < width end  | 
  
#inspect ⇒ Object
Same as to_s
      77 78 79  | 
    
      # File 'lib/paperclip/geometry.rb', line 77 def inspect to_s end  | 
  
#larger ⇒ Object
Returns the larger of the two dimensions
      58 59 60  | 
    
      # File 'lib/paperclip/geometry.rb', line 58 def larger [height, width].max end  | 
  
#smaller ⇒ Object
Returns the smaller of the two dimensions
      63 64 65  | 
    
      # File 'lib/paperclip/geometry.rb', line 63 def smaller [height, width].min end  | 
  
#square? ⇒ Boolean
True if the dimensions represent a square
      38 39 40  | 
    
      # File 'lib/paperclip/geometry.rb', line 38 def square? height == width end  | 
  
#to_s ⇒ Object
Returns the width and height in a format suitable to be passed to Geometry.parse
      68 69 70 71 72 73 74  | 
    
      # File 'lib/paperclip/geometry.rb', line 68 def to_s s = "" s << width.to_i.to_s if width > 0 s << "x#{height.to_i}" if height > 0 s << modifier.to_s s end  | 
  
#transformation_to(dst, crop = false) ⇒ Object
Returns the scaling and cropping geometries (in string-based ImageMagick format) neccessary to transform this Geometry into the Geometry given. If crop is true, then it is assumed the destination Geometry will be the exact final resolution. In this case, the source Geometry is scaled so that an image containing the destination Geometry would be completely filled by the source image, and any overhanging image would be cropped. Useful for square thumbnail images. The cropping is weighted at the center of the Geometry.
      88 89 90 91 92 93 94 95 96 97 98  | 
    
      # File 'lib/paperclip/geometry.rb', line 88 def transformation_to dst, crop = false if crop ratio = Geometry.new( dst.width / self.width, dst.height / self.height ) scale_geometry, scale = scaling(dst, ratio) crop_geometry = cropping(dst, ratio, scale) else scale_geometry = dst.to_s end [ scale_geometry, crop_geometry ] end  | 
  
#vertical? ⇒ Boolean
True if the dimensions represent a vertical rectangle
      48 49 50  | 
    
      # File 'lib/paperclip/geometry.rb', line 48 def vertical? height > width end  |