https://github.com/envato/aspect_ratio
Image aspect ratio calculation utility
https://github.com/envato/aspect_ratio
aspect ratio
Last synced: 11 months ago
JSON representation
Image aspect ratio calculation utility
- Host: GitHub
- URL: https://github.com/envato/aspect_ratio
- Owner: envato
- License: mit
- Created: 2016-04-26T00:20:14.000Z (about 10 years ago)
- Default Branch: main
- Last Pushed: 2024-10-06T05:21:24.000Z (over 1 year ago)
- Last Synced: 2025-06-25T04:29:35.366Z (12 months ago)
- Topics: aspect, ratio
- Language: Ruby
- Homepage:
- Size: 24.4 KB
- Stars: 12
- Watchers: 62
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# aspect_ratio
[](https://github.com/envato/aspect_ratio/blob/main/LICENSE)
[](https://rubygems.org/gems/aspect_ratio)
[](https://rubygems.org/gems/aspect_ratio)
[](https://github.com/envato/aspect_ratio/actions?query=branch%3Amain+workflow%3Atests)
Image aspect ratio utilities.
The Ruby port of [node-aspectratio](https://www.npmjs.com/package/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
```ruby
require 'aspect_ratio'
AspectRatio.crop(2048, 768, '4:3');
// [512, 768, 1024, 768]
```

### 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
```ruby
require 'aspect_ratio'
AspectRatio.resize(2048, 768, 640, 640);
// [640, 240]
```
## [MIT License](./LICENSE)