next up previous contents
Next: 1.2 I/O styles Up: 1. Introduction Previous: 1. Introduction   Contents

1.1 Why use VIPS?

If you use the VIPS image I/O system, you get a number of benefits:

Threading
If your computer has more than one CPU, the VIPS I/O system will automatically split your image processing operation into separate threads (provided you use PIO, see below). You should get an approximately linear speed-up as you add more CPUs.

Pipelining
Provided you use PIO (again, see below), VIPS can automatically join operations together. A sequence of image processing operations will all execute together, with image data flowing through the processing pipeline in small pieces. This makes it possible to perform complex processing on very large images with no need to worry about storage management.

Composition
Because VIPS can efficiently compose image processing operations, you can implement your new operation in small, reusable, easy-to-understand pieces. VIPS already has a lot of these: many new operations can be implemented by simply composing existing operations.

Large files
Provided you use PIO and as long as the underlying OS supports large files (that is, files larger than 2GB), VIPS operations can work on files larger than can be addressed with 32 bits on a plain 32-bit machine. VIPS operations only see 32 bit addresses; the VIPS I/O system transparently maps these to 64 bit operations for I/O. Large file support is included on most unixes after about 1998.

Abstraction
VIPS operations see only arrays of numbers in native format. Details of representation (big/little endian, VIPS/TIFF/JPEG file format, etc.) are hidden from you.

Interfaces
Once you have your image processing operation implemented, it automatically appears in all of the VIPS interfaces. VIPS comes with a GUI (nip), a UNIX command-line interface (vips) and a C++ API.

Portability
VIPS operations can be compiled on most unixes, Mac OS X and Windows NT, 2000 and XP without modification. Mostly.


next up previous contents
Next: 1.2 I/O styles Up: 1. Introduction Previous: 1. Introduction   Contents
John Cupitt 2005-04-11