Skip to content

Image aspect ratio calculation utility

License

Notifications You must be signed in to change notification settings

envato/aspect_ratio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

aspect_ratio

License MIT Gem Version Gem Downloads Build Status

Image aspect ratio utilities.

The Ruby port of node-aspectratio npm module.

Install

Install globally

gem install aspect_ratio

OR

Install locally with Bundler

Please include

gem 'aspect_ratio'

in your Gemfile then bundle install

Test

ruby test/aspect_ratio_test.rb

API

crop(integer width, integer height, string ratio)

Apply a fixed aspect ratio crop without distoring the image aspect ratio.

  • integer width - original image width
  • integer height - original image height
  • string ratio - new image ratio

The ratio must be on the following format: x:y where x and y are integers. The order of x and z does not matter and 3:4 will be treated as 4:3.

By default #crop() will match the orientation of the original image unless a forced orientation is given on the follwing format: x:y!z where z is the orientation (v for vertical, or h for horizontal).

Return

This will return an Array of four values:

  1. integer x - top lef x coordinate
  2. integer y - top lef y coordinate
  3. integer width - new image width
  4. integer height - new image height

Example

require 'aspect_ratio'
AspectRatio.crop(2048, 768, '4:3');
// [512, 768, 1024, 768]

Crop with fixed ratio

resize(integer x, integer y, integer maxX, integer maxY, boolean enlarge)

Get resized height and width of an image while perserving the aspect ratio of the image.

  • integer x - original image width
  • integer y - original image height
  • integer maxX - max image width
  • integer maxY - max image height
  • boolean enlarge - enlarge when original is smaller than the max - default true

Return

Returns an Array of the resized x and y values:

  • integer x - resized image width
  • integer y - resized image height

Example

require 'aspect_ratio'
AspectRatio.resize(2048, 768, 640, 640);
// [640, 240]