2012-06-29 13:20:50 +02:00
|
|
|
# libvips : an image processing library
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2011-02-14 12:34:13 +01:00
|
|
|
libvips is an image processing library. It's good for large images and for
|
2012-06-29 13:36:56 +02:00
|
|
|
colour. There's a GUI as well, see the [VIPS website](http://www.vips.ecs.soton.ac.uk).
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2012-06-29 13:36:56 +02:00
|
|
|
There are packages for most unix-like operating systems and binaries for
|
2011-01-06 15:18:00 +01:00
|
|
|
Windows and OS X.
|
2008-03-26 17:56:51 +01:00
|
|
|
|
2012-06-29 13:20:50 +02:00
|
|
|
# Building libvips from source
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2012-06-29 13:20:50 +02:00
|
|
|
In the libvips directory you should just be able to do:
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2009-08-27 15:07:58 +02:00
|
|
|
$ ./configure
|
|
|
|
$ make
|
|
|
|
$ sudo make install
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2012-06-29 13:36:56 +02:00
|
|
|
By default this will install files to `/usr/local`.
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2012-06-29 13:20:50 +02:00
|
|
|
See the Dependencies section below for a list of the things that
|
|
|
|
libvips needs in order to be able to build.
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2012-06-29 13:20:50 +02:00
|
|
|
We have detailed guides on the wiki for [building on
|
|
|
|
Windows](http://www.vips.ecs.soton.ac.uk/index.php?title=Build_on_windows)
|
|
|
|
and [building on OS
|
|
|
|
X](http://www.vips.ecs.soton.ac.uk/index.php?title=Build_on_OS_X).
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2012-06-29 13:20:50 +02:00
|
|
|
# Building libvips from GIT
|
2009-08-27 15:07:58 +02:00
|
|
|
|
|
|
|
Checkout the latest sources with:
|
|
|
|
|
2012-06-29 13:36:56 +02:00
|
|
|
$ git clone git://github.com/jcupitt/libvips.git
|
2009-08-27 15:07:58 +02:00
|
|
|
|
2011-02-14 12:34:13 +01:00
|
|
|
Then for a debug build:
|
2009-08-27 15:07:58 +02:00
|
|
|
|
|
|
|
$ ./bootstrap.sh
|
2013-07-15 23:01:00 +02:00
|
|
|
$ CFLAGS="-g -Wall" CXXFLAGS="-g -Wall" \
|
|
|
|
./configure --prefix=/home/john/vips --enable-gtk-doc
|
2009-08-27 15:07:58 +02:00
|
|
|
$ make
|
|
|
|
$ make install
|
|
|
|
|
2013-05-01 19:46:15 +02:00
|
|
|
Static analysis with:
|
|
|
|
|
|
|
|
$ cppcheck --force --enable=style . &> cppcheck.log
|
|
|
|
|
2013-07-15 23:01:00 +02:00
|
|
|
Leak check:
|
|
|
|
|
2013-07-16 12:37:01 +02:00
|
|
|
$ export G_DEBUG=gc-friendly
|
2013-07-15 23:01:00 +02:00
|
|
|
$ export G_SLICE=always-malloc
|
|
|
|
$ valgrind --suppressions=/home/john/nip2.supp \
|
|
|
|
--leak-check=yes \
|
|
|
|
vips ... > vips-vg.log 2>&1
|
|
|
|
|
2013-11-22 11:12:54 +01:00
|
|
|
Clang build:
|
|
|
|
|
|
|
|
$ CC=clang CXX=clang++ ./configure --prefix=/home/john/vips
|
|
|
|
|
2013-11-22 12:27:29 +01:00
|
|
|
Clang static analysis:
|
|
|
|
|
2013-11-22 15:34:13 +01:00
|
|
|
$ scan-build ./configure --disable-introspection
|
2013-11-22 12:27:29 +01:00
|
|
|
$ scan-build -o scan -v make
|
2013-11-22 15:34:13 +01:00
|
|
|
$ scan-view scan/2013-11-22-2
|
2013-11-22 12:27:29 +01:00
|
|
|
|
2013-11-22 11:12:54 +01:00
|
|
|
Clang dynamic analysis:
|
|
|
|
|
2013-12-03 13:39:13 +01:00
|
|
|
$ FLAGS="-O1 -g -fsanitize=address"
|
|
|
|
$ FLAGS="$FLAGS -fno-omit-frame-pointer -fno-optimize-sibling-calls"
|
2013-11-22 11:12:54 +01:00
|
|
|
$ CC=clang CXX=clang++ LD=clang \
|
2013-12-03 13:39:13 +01:00
|
|
|
CFLAGS="$FLAGS" CXXFLAGS="$FLAGS" LDFLAGS=-fsanitize=address \
|
2013-11-22 11:12:54 +01:00
|
|
|
./configure --prefix=/home/john/vips --disable-introspection
|
|
|
|
|
2013-12-03 13:39:13 +01:00
|
|
|
$ FLAGS="-O1 -g -fsanitize=thread"
|
|
|
|
$ FLAGS="$FLAGS -fPIC -pie"
|
|
|
|
$ FLAGS="$FLAGS -fno-omit-frame-pointer -fno-optimize-sibling-calls"
|
2013-11-22 11:12:54 +01:00
|
|
|
$ CC=clang CXX=clang++ LD=clang \
|
2013-12-03 13:39:13 +01:00
|
|
|
CFLAGS="$FLAGS" CXXFLAGS="$FLAGS" \
|
2013-11-22 15:50:40 +01:00
|
|
|
LDFLAGS="-fsanitize=thread -fPIC -pie" \
|
2013-11-22 11:12:54 +01:00
|
|
|
./configure --prefix=/home/john/vips --disable-introspection
|
|
|
|
|
2013-12-05 15:40:42 +01:00
|
|
|
Build with the GCC auto-vectorizer and diagnostics (or just -O3):
|
2013-12-03 13:39:13 +01:00
|
|
|
|
|
|
|
$ FLAGS="-O2 -msse4.2 -ffast-math"
|
|
|
|
$ FLAGS="$FLAGS -ftree-vectorize -fdump-tree-vect-details"
|
|
|
|
$ CFLAGS="$FLAGS" CXXFLAGS="$FLAGS" \
|
|
|
|
./configure --prefix=/home/john/vips --disable-introspection \
|
|
|
|
--enable-debug=no
|
|
|
|
|
2012-06-29 13:20:50 +02:00
|
|
|
# Dependencies
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2011-02-14 12:34:13 +01:00
|
|
|
libvips has to have gettext, glib-2.x and libxml-2.0. The build system needs
|
2012-11-13 16:39:11 +01:00
|
|
|
sh, pkg-config, swig, gtk-doc-tools, automake, gobject-introspection and gnu make.
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2012-06-29 13:20:50 +02:00
|
|
|
# Optional dependencies
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2012-06-29 13:20:50 +02:00
|
|
|
If suitable versions are found, libvips will add support for the following
|
2012-06-29 13:36:56 +02:00
|
|
|
libraries automatically. See `./configure --help` for a set of flags to
|
|
|
|
control library detection. Packages are generally found with `pkg-config`,
|
2011-02-14 12:34:13 +01:00
|
|
|
so make sure that is working.
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2011-02-14 12:34:13 +01:00
|
|
|
libtiff and libjpeg do not usually use pkg-config so libvips looks for
|
|
|
|
them in the default path and in $prefix. If you have installed your own
|
|
|
|
versions of these libraries in a different location, libvips will not see
|
|
|
|
them. Use switches to libvips configure like:
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2008-10-11 23:29:16 +02:00
|
|
|
./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
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2011-02-14 12:34:13 +01:00
|
|
|
to get libvips to see your builds.
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2012-06-29 13:20:50 +02:00
|
|
|
## libjpeg
|
|
|
|
|
|
|
|
The IJG JPEG library.
|
|
|
|
|
|
|
|
## libexif
|
|
|
|
|
2012-06-29 13:36:56 +02:00
|
|
|
If available, libvips adds support for EXIF metadata in JPEG files.
|
2012-06-29 13:20:50 +02:00
|
|
|
|
|
|
|
## 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.
|
|
|
|
|
|
|
|
## libz
|
|
|
|
|
|
|
|
If your TIFF library includes ZIP compression, you'll need this too.
|
|
|
|
|
|
|
|
## videodev.h
|
|
|
|
|
|
|
|
If libvips finds linux/videodev.h, you get support for Linux video
|
|
|
|
grabbing.
|
|
|
|
|
|
|
|
## fftw3
|
|
|
|
|
|
|
|
If libvips finds this library, it uses it for fourier transforms. It
|
|
|
|
can also use fftw2, but 3 is faster and more accurate.
|
|
|
|
|
|
|
|
## lcms2, lcms
|
|
|
|
|
|
|
|
If present, im_icc_import(), _export() and _transform() are available
|
|
|
|
for transforming images with ICC profiles. If lcms2 is available,
|
2012-06-29 13:36:56 +02:00
|
|
|
it is used in preference to lcms since it is faster.
|
2012-06-29 13:20:50 +02:00
|
|
|
|
|
|
|
## Large files
|
|
|
|
|
|
|
|
libvips 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
|
|
|
|
|
2012-06-29 13:36:56 +02:00
|
|
|
If present, libvips can load and save png files.
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2012-06-29 13:20:50 +02:00
|
|
|
## libMagick, or optionally GraphicsMagick
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2012-06-29 13:20:50 +02:00
|
|
|
if available, libvips adds support for loading all libMagick supported
|
|
|
|
image file types (about 80 different formats). Use
|
2012-06-29 13:36:56 +02:00
|
|
|
`--with-magickpackage` to build against graphicsmagick instead.
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2012-06-29 13:20:50 +02:00
|
|
|
## pangoft2
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2012-06-29 13:36:56 +02:00
|
|
|
If available, libvips adds support for text rendering. You need the
|
|
|
|
package pangoft2 in `pkg-config --list-all`.
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2012-06-29 13:20:50 +02:00
|
|
|
## orc-0.4
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2012-06-29 13:36:56 +02:00
|
|
|
If available, vips will accelerate some operations with this run-time
|
|
|
|
compiler.
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2012-06-29 13:20:50 +02:00
|
|
|
## matio
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2012-06-29 13:36:56 +02:00
|
|
|
If available, vips can load images from Matlab save files.
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2012-06-29 13:20:50 +02:00
|
|
|
## cfitsio
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2012-06-29 13:36:56 +02:00
|
|
|
If available, vips can load FITS images.
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2012-06-29 13:20:50 +02:00
|
|
|
## OpenEXR
|
2011-01-06 15:18:00 +01:00
|
|
|
|
2012-06-29 13:36:56 +02:00
|
|
|
If available, libvips will directly read (but not write, sadly)
|
|
|
|
OpenEXR images.
|
2011-01-06 15:18:00 +01:00
|
|
|
|
2012-06-29 13:20:50 +02:00
|
|
|
## OpenSlide
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2012-06-29 13:36:56 +02:00
|
|
|
If available, libvips can load OpenSlide-supported virtual slide
|
2012-09-21 23:05:01 +02:00
|
|
|
files: Aperio, Hamamatsu VMS and VMU, Leica, MIRAX, and Trestle.
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2012-06-29 13:20:50 +02:00
|
|
|
## swig, python, python-dev
|
2011-12-08 20:49:53 +01:00
|
|
|
|
2012-06-29 13:36:56 +02:00
|
|
|
If available, we build the python binding too.
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2012-06-29 13:20:50 +02:00
|
|
|
# Disclaimer
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2012-06-29 13:20:50 +02:00
|
|
|
No guarantees of performance accompany this software, nor is any
|
2007-08-29 18:23:50 +02:00
|
|
|
responsibility assumed on the part of the authors. Please read the licence
|
|
|
|
agreement.
|
|
|
|
|