DevIL

Developer's Image Library or DevIL, started by Denton Woods, is a cross-platform image library which aims to provide a common API for different image file formats. It consists of three parts: the main library (IL), the utility library (ILU) and the utility toolkit (ILUT), mirroring the corresponding parts of OpenGL (although the OpenGL Utility Toolkit is not part of the OpenGL specification).

It was originally called OpenIL; the name was changed at a request from Silicon Graphics, Inc.

DevIL currently supports 43 file formats for reading and 17 for writing; among those with read-write support are BMP, DDS, JPEG, PCX, PNG, raw, TGA, and TIFF. The actual supported formats depend on compilation settings, in particular, external libraries like libjpeg and libpng.

According to the website (as well as the source repository), DevIL is still licensed under the terms of the LGPL. DevIl is listed in the directory of the Free Software Foundation as Free Software.

Features

 * Portable, supports Windows, Mac OS X and *nix.
 * OpenGL-style syntax.
 * Use of image names instead of pointers.
 * Full Unicode support for filenames.
 * 64-bit compatibility.
 * Loading from files, file streams or memory "lumps".
 * Direct access to data through  and.
 * Support for luminance,,   and colour-indexed images.
 * Support for 3 different numbers of bits per channel.
 * Conversion between all formats and datatypes (including palettes).
 * User-defined automatic conversions if desired when loading images.
 * Automatic conversion when saving images if needed.
 * Automatic conversion of colour-indexed images to truecolour images if desired.
 * Controllable compression when saving.
 * Maintains a state stack that can be pushed and popped.
 * Full support for 3d texture volumes (3d images).
 * Validation of images.
 * Support for layers.
 * Support for mipmaps.
 * Support for animations.
 * Support for cubemaps.
 * User-specified clear colour.
 * Can load a default image if loading fails.
 * User-specified hints.
 * Use of key colours.
 * Support for overlaying an image on top of another.
 * Allows the user to specify their own loading and saving callbacks, even overriding the default ones.
 * Support for user-specified read and write functions.
 * Delphi support.
 * Visual Basic support.
 * Linux support.
 * Can pick and choose which features will be used to create smaller dlls.
 * Choose whether to use the Intel Jpeg Library or libjpeg.
 * A whole host of effects and filters to apply to images, such as embossing and edge detection.
 * Images can be resized or even be put on a larger background (enlarged canvas).
 * OpenGL, Allegro, Windows GDI and DirectX API support.