What is it ?

- The CImg Library is a free C++ toolkit providing simple classes and functions to load, save, process and display images in your own C++ code.
- It is highly portable and fully works on Unix/X11, Windows, MacOS X and FreeBSD operating systems. It should compile on other systems as well (eventually without display capabilities).
- It consists only of a single header file CImg.h that must be included in your program source.
- It contains useful image processing algorithms for loading/saving, resizing/rotating, filtering, object drawing (text, lines, faces, curves, ellipses,..), etc...
- Images are instancied by a class able to represent images up to 4-dimension wide (from 1-D scalar signals to 3-D volumes of vector-valued pixels), with template pixel types.
- It depends on a minimal number of libraries : you can compile it only with standart C libraries. No need for exotic libraries and complex dependencies.
- Additional features appear with the use of ImageMagick : install the ImageMagick package to be able to load and save compressed image formats (GIF,BMP,TIF,JPG,PNG,...).
- Additional features appear with the use of LAPACK : link your code with the lapack library to be able to compute eigenvalues or eigenvectors of big matrices.

> CImg stands for Cool Image : It is simple to use and efficient. It's like a STL for image processing !
> In the CImg package, a lot of examples are provided to help the developper in its first steps.

See Also :

- The Screenshots section shows examples of applications where CImg is used.
- The Download section is the place to get the latest CImg Library package.
- The Tutorial section illustrate the basis of CImg classes and functions.

Author :

> David Tschumperlé ( More informations on the author can be found on his web page ).
> With the help of :
> - Jean-Daniel Guyot : Port on Mac OS X.
> - Thierry Thomas : Port on FreeBSD.

Quick History :

> The development of the CImg Library began at the end of 1999, when I started my PhD thesis in the Odyssée Lab at the Sophia Antipolis. It was designed to help me and my collegues developing various image processing algorithms, for datasets as simple as 2D scalar images, or as complex as 3D volumes of diffusion tensors. I also used it for courses on image processing I teached at the university. That's why the CImg library is intended to be quite generic, thanks to the pixel-template parameters and the high number of possible dimensions (four dimensions for an image). I must admit that the limit of 4 dimensions has never been a problem since I've started the library (particularly since we can also use image lists represented by the CImgl<T> class). Conversely, this limit permitted to implement very efficient functions and algorithms. To sum up, the CImg Library has been designed to be simple to use, and efficient. It provides a lot of basic functions that one would like to see in an image processing framework for C++ programming. Its simplicity, its tiny size and its efficiency are the three reasons for you to download and test it ! If you are interested, just go to the download section, or see the screenshots section, in order to see what CImg can do for you.

License :

> The CImg Library is distributed under the GPL (Gnu General Public License).
> The library has been mainly designed for teaching and research activities.
> The source code has been registered to the APP (French Agency for the Protection of Programs) by the INRIA.

Additional notes :

- The library has been essentially done during free time, it is a non-profit project and needs help. Do not hesitate contacting me (D. Tschumperlé) to submit bug reports or new features.