Dragonfly libvips
Dragonfly analysers and processors for libvips image processing library
From the libvips README:
libvips is a 2D image processing library. Compared to similar libraries, libvips runs quickly and uses little memory. libvips is licensed under the LGPL 2.1+.
Installation
Add this line to your application's Gemfile:
gem 'dragonfly_libvips'
And then execute:
$ bundle
Or install it yourself as:
$ gem install dragonfly_libvips
libvips
If you run into trouble installing libvips
with Ruby introspection on Linux, follow the build steps here. Please note the importance of gobject-introspection
and libgirepository1.0-dev
plus the export GI_TYPELIB_PATH=/usr/local/lib/girepository-1.0/
and ldconfig
.
Dependencies
The vips library and its dependencies.
Usage
Configure your app the usual way:
Dragonfly.app.configure do
plugin :libvips
end
Supported Formats
List of supported formats (based on your build and version of the libvips
library) is available as:
DragonflyLibvips::SUPPORTED_FORMATS # => ["csv", "dz", "gif", …]
DragonflyLibvips::SUPPORTED_OUTPUT_FORMATS # => ["csv", "dz", "gif", …]
Processors
Thumb
Create a thumbnail by resizing/cropping
image.thumb('40x30')
Below are some examples of geometry strings for thumb
:
'400x300' # resize, maintain aspect ratio
'400x' # resize width, maintain aspect ratio
'x300' # resize height, maintain aspect ratio
'400x300<' # resize only if the image is smaller than this
'400x300>' # resize only if the image is larger than this
Encode
Change the encoding with
image.encode('jpg')
Extract Area
Extract an area from an image.
image.extract_area(x, y, width, height)
Rotate
Rotate a number of degrees with
image.rotate(90)
Options
All processors support input_options
and output_options
for passing additional options to vips. For example:
image.encode('jpg', output_options: { Q: 50 })
image.encode('jpg', output_options: { interlace: true }) # use interlace to generate a progressive jpg
pdf.encode('jpg', input_options: { page: 0, dpi: 600 })
Defaults:
input_options: { access: :sequential }
output_options: { profile: … } # embeds 'sRGB_v4_ICC_preference.icc' profile included with this gem
Analysers
The following methods are provided
image.width # => 280
image.height # => 355
image.xres # => 72.0
image.yres # => 72.0
image.progressive # => true
image.aspect_ratio # => 0.788732394366197
image.portrait? # => true
image.landscape? # => false
image.format # => 'png'
image.image? # => true
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run rake test
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and tags, and push the .gem
file to rubygems.org.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/tomasc/dragonfly_libvips.
License
The gem is available as open source under the terms of the MIT License.