libvips is a demand-driven, horizontally threaded image processing library. Compared to similar libraries, libvips runs quickly and uses little memory. libvips is licensed under the LGPL 2.1+.
It has around 300 operations covering arithmetic, histograms, convolution, morphological operations, frequency filtering, colour, resampling, statistics and others. It supports a large range of numeric formats, from 8-bit int to 128-bit complex. Images can have any number of bands. It supports a good range of image formats, including JPEG, TIFF, PNG, WebP, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM, CSV, GIF, Analyze, NIfTI, DeepZoom, and OpenSlide. It can also load images via ImageMagick or GraphicsMagick, letting it load formats like DICOM.
It comes with bindings for C, C++, and the command-line. Full bindings are available for Ruby, Python, PHP, .NET, Go, and Lua. libvips is used as an image processing engine by sharp (on node.js), bimg, sharp for Go, Ruby on Rails, carrierwave-vips, mediawiki, PhotoFlow and others. The official libvips GUI is nip2, a strange combination of a spreadsheet and an photo editor.
The download area has the source code plus pre-compiled binaries for Windows; you can install on macOS with homebrew, MacPorts or Fink; and it’s available in most Linux package managers. See the install notes.
Tweets about libvips
- 2020-09-01 00:00:00 +0000
2020-06-18 00:00:00 +0000
libvips 8.10 is now out, so here’s a quick overview of what’s new. Check the ChangeLog if you need more details.
2019-12-11 00:00:00 +0000
libvips 8.9 is now done, so here’s a quick overview of what’s new. Check the ChangeLog if you need more details.
2019-11-29 00:00:00 +0000
An interesting feature has just landed in libvips git master (and should be in the upcoming libvips 8.9): true streaming. This has been talked about on and off for five years or more, but it’s now finally happened! This post explains what this feature is and why it could be useful.
2019-09-27 00:00:00 +0000
Thanks to work by Lovell, libvips is now listed on opencollective.
2019-08-18 00:00:00 +0000
Thanks to work by Sebastian Luna-Valero (@sebastian-luna-valero) and others, pyvips is now in conda!
2019-08-18 00:00:00 +0000
Thanks to work by Oscar Mira (@omira-sch), libvips has been in OSS Fuzz for about three weeks. I’m very happy to be able to report that only one real bug has been found so far, and none in the last five days.
- 2019-04-22 00:00:00 +0000
2019-03-21 00:00:00 +0000
Here is a quick video on getting started with nip
2019-02-04 00:00:00 +0000
I gave a 15m introduction to vips talk at LGM 2016, and just came across the video. It might be interesting.
2018-07-26 00:00:00 +0000
libvips 8.7 is finally done!
2018-04-10 00:00:00 +0000
There’s a new full libvips binding for .NET. It has a test-suite which passes with no memory leaks, it’s in
NuGet, so it’s easy to install on Linux, macOS and Windows, and it has nice documentation:
2017-11-28 00:00:00 +0000
libvips 8.6 is done! Though it’s a bit late. This post summarizes what’s new – check the ChangeLog if you need more details.
2017-09-02 00:00:00 +0000
There’s a new major release of
ruby-vips, the Ruby binding for libvips: it’s now version 2.0. It has the same API (it passes the same test suite), but it’s simpler to install, works on Linux, macOS and Windows, it works with any Ruby (including JRuby), it’s smaller, more stable, and faster.
2017-09-01 00:00:00 +0000
There’s a new libvips binding for Python. It has the same API as the one that comes with libvips (it passes the same test suite), it’s very easy to install on Linux, macOS and Windows, it works with any Python, it should be smaller and more stable, and it has nice new documentation:
2017-06-01 00:00:00 +0000
LuaJIT now has a full libvips binding. It’s the whole of libvips, it has a test-suite which passes with no memory leaks, and it’s in
luarocksso it’s easy to install.
2017-03-28 00:00:00 +0000
We have a new website running from github pages. Hopefully this will be easier to use and less work to maintain.
2017-03-16 00:00:00 +0000
libvips 8.5 is done! This post summarizes what’s new in this release. Check the ChangeLog if you need more details.