VIPS 
====

VIPS is an image processing library. It's good for large images and for
colour. There's a GUI as well, see the VIPS website:

	http://www.vips.ecs.soton.ac.uk

There are packages for most linuxes and OS X. There is a pre-compiled windows
binary on the vips website.

Building VIPS from source
=========================

In the VIPS directory, you should just be able to do:

	$ ./configure
	$ make
	$ sudo make install

By default this will install files to /usr/local.

If you have problems, read on.

Building VIPS on win32
----------------------

The easiest route is to use mingw/msys. This provides a GNU-style
build environment for win32. 

	http://www.vips.ecs.soton.ac.uk/index.php?title=Build_on_windows

You can also cross-compile from a unix system to windows.

Building VIPS on OS X
---------------------

There are packages in macports.

	http://www.macports.org

Building VIPS from SVN
----------------------

Checkout the latest sources with:

	svn co https://vips.svn.sourceforge.net/svnroot/vips/vips7

Then:

	$ ./bootstrap.sh
	$ CFLAGS="-g -Wall" CXXFLAGS="-g -Wall" ./configure --prefix=/home/john/vips --enable-gtk-doc
	$ make
	$ make install

Dependencies
============

VIPS has to have gettext, glib-2.x and libxml-2.0. The build system needs 
pkg-config and gnu make.

Optional dependencies
---------------------

Optional support libraries ... also try ./configure --help to see flags for
controlling these libs. By default, if suitable versions are found, VIPS will
build support for them automatically.

VIPS looks for stuff with pkg-config, so make sure pkg-config can find these
extra libraries. libtiff and libjpeg do not generally use pkg-config, so 
VIPS looks for them in the default path and in $prefix. If you have installed
your own versions of these libraries in a different location, vips will not see
them. Use switches to VIPS configure like:

	./configure --prefix=/Users/john/vips \
		--with-tiff-includes=/opt/local/include \
		--with-tiff-libraries=/opt/local/lib \
		--with-jpeg-includes=/opt/local/include \
		--with-jpeg-libraries=/opt/local/lib

or perhaps:

	CFLAGS="-g -Wall -I/opt/local/include -L/opt/local/lib" \
		CXXFLAGS="-g -Wall -I/opt/local/include -L/opt/local/lib" \
		./configure --without-python --prefix=/Users/john/vips 

to get VIPS to see your builds.

libjpeg
	The IJG JPEG library. We use 6b, but 6a works too.

libexif
	if available, VIPS adds support for EXIF metadata in JPEG files

libtiff
	The TIFF library. It needs to be built with support for JPEG and
	ZIP compression. 3.4b037 and later are known to be OK. 
	You'll need libz for this too. We use 1.1.3, others should work. 

libz
	If your TIFF library includes ZIP compression, you'll need this too.

videodev.h
	If VIPS finds linux/videodev.h, you get support for Linux video 
	grabbing.

fftw3
	If VIPS finds this library, it uses it for fourier transforms. It can
	also use fftw2, but 3 is faster and more accurate.

 	If the library is not found, VIPS falls back to it's own internal FFT
	routines which are slower and less accurate.

lcms
	If present, im_icc_import(), _export() and _transform() are available
	for transforming images with ICC profiles.

large files
	VIPS uses the standard autoconf tests to work out how to support large
	files (>2GB) on your system. Any reasonably recent *nix should be OK.

libpng
	if present, VIPS can load and save png files. Version 1.2+ preferred.

libMagick, or optionally GraphicsMagick
	if available, VIPS adds support for loading all libMagick supported
	image file types (about 80 different formats). No saving though.

pango
freetype2
fontconfig
	if available, VIPS adds support for text rendering. You need the
	package pangoft2 in "pkg-config --list-all"

liboil
	if available, you get some inner loops replcaed by calls to liboil's
	library of optimised inner loops

OpenEXR
	if available, VIPS will directly read (but not write, sadly) OpenEXR 
	images

swig
python
python-dev
	if available, we build the python binding too

Disclaimer
----------

Disclaimer: No guarantees of performance accompany this software, nor is any
responsibility assumed on the part of the authors. Please read the licence
agreement.

