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-or-later.
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 types, 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, JPEG 2000, JPEG XL, TIFF, PNG, WebP, HEIC, AVIF, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM / PGM / PFM, CSV, GIF, Analyze, NIfTI, DeepZoom, and OpenSlide. It can also load images via ImageMagick or GraphicsMagick, letting it work with formats like DICOM.
It comes with bindings for C, C++, and the command-line. Full bindings are available for Ruby, Python, PHP, .NET, Go, Lua, and Java. 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.
News
-
2024-11-26 00:00:00 +0000
nip4 November progress
I’ve done another month on nip4 – plotting is in now, and I’ve done a first version of the new toolkit browser.
-
2024-10-19 00:00:00 +0000
nip4 progress
libvips.org OpenCollective has generously given me a year of funding to complete nip4. This is an update of the libvips GUI, nip2, to the gtk4 toolkit, and to the vips8 API.
-
2024-10-10 00:00:00 +0000
What's new in libvips 8.16
Here’s a summary of what’s new in libvips 8.16. Check the ChangeLog if you need more details.
-
2023-10-10 00:00:00 +0000
What's new in libvips 8.15
libvips 8.15 is now done, so here’s a summary of what’s new. Check the ChangeLog if you need more details.
-
2023-07-23 00:00:00 +0000
vipsdisp 2.5 is out
There’s a new version of vipsdisp, a gtk4 image viewer.
-
2023-04-06 00:00:00 +0000
Charity bike ride
This isn’t libvips at all, but I’ve entered a charity bike ride:
-
2022-12-22 00:00:00 +0000
What's new in libvips 8.14
libvips 8.14 is now done, so here’s a summary of what’s new. Check the ChangeLog if you need more details.
-
2022-05-28 00:00:00 +0000
What's new in libvips 8.13
libvips 8.13 is now done, so here’s a summary of what’s new. Check the ChangeLog if you need more details.
-
2022-04-18 00:00:00 +0000
New pyvips and php-vips
pyvips and php-vips have launched interesting new versions.
-
2021-11-14 00:00:00 +0000
What's new in 8.12
Here’s a quick overview of what’s new in libvips 8.12. Check the ChangeLog if you need more details.
-
2021-06-04 00:00:00 +0000
What's new in 8.11
libvips 8.11 is now out, so here’s a quick overview of what’s new. Check the ChangeLog if you need more details.
-
2021-03-08 00:00:00 +0000
ruby-vips and image mutability
ruby-vips is now at version 2.1 with a few useful bug fixes and an interesting new
mutate
feature. This block makes it possible to modify images efficiently and safely. -
2020-09-01 00:00:00 +0000
libvips for WebAssembly
There's a new full libvips binding for the browser and Node.js. It supports reading and writing JPEG, PNG, WebP and TIFF images, it's on NPM, and it comes with TypeScript declarations. -
2020-06-18 00:00:00 +0000
What's new in 8.10
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
What's new in 8.9
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
True streaming for libvips
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
libvips on opencollective
Thanks to work by Lovell, libvips is now listed on opencollective.
-
2019-08-18 00:00:00 +0000
pyvips in conda
Thanks to work by Sebastian Luna-Valero (@sebastian-luna-valero) and others, pyvips is now in conda!
-
2019-08-18 00:00:00 +0000
libvips in OSS Fuzz
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
What's new in 8.8
libvips 8.8 is now officially released, so here’s a quick overview of what’s new. Check the ChangeLog if you need more details.
-
2019-03-21 00:00:00 +0000
NIP getting started video
Here is a quick video on getting started with nip
-
2019-02-04 00:00:00 +0000
Libre Graphics Meeting 2016
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
What's new in 8.7
libvips 8.7 is finally done!
-
2018-04-10 00:00:00 +0000
libvips for .NET
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
What's new in 8.6
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
libvips for Ruby
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
libvips for Python
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
libvips for Lua
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
luarocks
so it’s easy to install. -
2017-03-28 00:00:00 +0000
New website
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
What's new in 8.5
libvips 8.5 is done! This post summarizes what’s new in this release. Check the ChangeLog if you need more details.