[Image-SIG] Yet another image processing library

jcupitt at gmail.com jcupitt at gmail.com
Tue Oct 7 12:00:04 CEST 2008

2007/7/30  <jcupitt at gmail.com>:
> I help maintain an image processing library called VIPS. We've just
> released a new stable version and one of the new features is a Python
> binding.
>  http://www.vips.ecs.soton.ac.uk

I hope no one minds this announcement. We've just released a new
stable version of vips, 7.16.2, that improves the Python binding quite
a bit.

Good things about vips:

* fast, since it's written in C and has good SMP support
* low memory use, especially for large images and complex processing,
since it is demand-driven and keeps source images on disc where
* many pixel formats, from 8 to 128-bit pixels, and any number of image bands
* >300 image processing operations available in Python
* LGPL license

Bad things about vips:

* no Python binding for Windows (though it ought to be easy to build)
* this new version is not yet available in all linuxes so you might
need to compile from source
* the Python binding is generated automatically from a C++ binding and
isn't very Pythonesque

More detail and benchmarks here:


New stuff in this version:

* The varargs parts of the C++ API are now wrapped in Python, so you
can do things like building masks from lists:

mask = VMask.VIMask (3, 3, 2, 0,
		  [-1, -1, -1,
		   -1,  16, -1,
		   -1, -1, -1])

To make a 3x3 integer convolution mask, with scale == 2.

* The VImage class now has .tobuffer(), .frombuffer() and .tostring()
and .fromstring(), so you can efficiently move images between PIL and
VIPS. There are also a couple of utility functions to convert VIPS
headers to PIL headers and back. There's some sample code in SVN:


Although it won't copy over image metadata, like EXIF and ICC profiles, sadly.


More information about the Image-SIG mailing list