ruby-vips
This gem is a Ruby binding for the libvips image processing library.
Programs that use ruby-vips
don't manipulate images directly, instead
they create pipelines of image processing operations building on a source
image. When the end of the pipe is connected to a destination, the whole
pipeline executes at once, streaming the image in parallel from source to
destination a section at a time. Because ruby-vips
is parallel, it's quick,
and because it doesn't need to keep entire images in memory, it's light.
Requirements
macOS, Linux, and Windows tested
libvips 8.2 or later, see the libvips install instructions
ruby-ffi 1.9 or later
Ruby 2.0+, JRuby
Install
It's just:
$ gem install ruby-vips
or include it in Gemfile
:
gem "ruby-vips"
On Windows, you'll need to set the RUBY_DLL_PATH
environment variable to
point to the libvips bin directory.
Example
require "vips"
im = Vips::Image.new_from_file filename
# put im at position (100, 100) in a 3000 x 3000 pixel image,
# make the other pixels in the image by mirroring im up / down /
# left / right, see
# https://libvips.github.io/libvips/API/current/libvips-conversion.html#vips-embed
im = im. 100, 100, 3000, 3000, extend: :mirror
# multiply the green (middle) band by 2, leave the other two alone
im *= [1, 2, 1]
# make an image from an array constant, convolve with it
mask = Vips::Image.new_from_array [
[-1, -1, -1],
[-1, 16, -1],
[-1, -1, -1]], 8
im = im.conv mask, precision: :integer
# finally, write the result back to a file on disk
im.write_to_file output_filename
The Vips
section in the API docs has a tutorial introduction with
examples.
ruby-vips has API documentation. The libvips reference manual has a complete explanation of every method.
The
example/
directory has some simple example programs.
Benchmarks
The benchmark at vips-benchmarks loads a large image, crops, shrinks, sharpens and saves again, and repeats 10 times.
real time in seconds, fastest of five runs
benchmark tiff jpeg
ruby-vips.rb 0.85 0.78
image-magick 2.03 2.44
rmagick.rb 3.87 3.89
peak memory use in kb
benchmark peak RES
ruby-vips.rb 43864
rmagick.rb 788768