[Image-SIG] Yet another image processing library

jcupitt at gmail.com jcupitt at gmail.com
Wed Oct 8 10:33:41 CEST 2008


2008/10/8 David Goldsmith <d_l_goldsmith at yahoo.com>:
> How "PIL-like" is your Python API?

The 'Python' page on our website has some sample code comparing PIL and vips:

http://www.vips.ecs.soton.ac.uk/index.php?title=Python#Speed_and_memory_use

So it's broadly similar. I suppose someone could write a wrapper class
that makes vips look more like PIL, but I don't think 100%
compatibility is possible, since vips has (almost) no destructive
operations.

I think the big differences are:

* vips should be quicker, especially if you have more than one CPU
core or you're working on large images, though it does depend on what
operations you use and what image format you work in
* vips can process larger images and needs less memory
* vips is more flexible in the range of image formats available: vips
images are width, height, bands, format and that's it, there's no RGB
mode or greyscale mode or alpha channel or anything like that
* vips can handle metadata like ICC profiles and EXIF data
* vips has a larger range of operations available (I think)
* vips is almost all C/C++, so it's harder to extend or modify from Python
* vips has (almost) no destructive operations: unlike PIL, you can't
modify images, you can only make new images (most demand-driven image
processing systems are like this, it makes caching and parallelism
much easier)
* PIL has a more 'natural' Python interface
* vips has a GUI you can use to experiment with (nip2), though it's
rather an odd one

John


More information about the Image-SIG mailing list