Magick++ is the object-oriented C++ API to the GraphicsMagick image-processing library, the most comprehensive open-source image processing package available. Read the ChangeLog for Magick++.
Magick++ supports an object model which is inspired by PerlMagick. Images support implicit reference counting so that copy constructors and assignment incur almost no cost. The cost of actually copying an image (if necessary) is done just before modification and this copy is managed automatically by Magick++. De-referenced copies are automatically deleted. The image objects support value (rather than pointer) semantics so it is trivial to support multiple generations of an image in memory at one time.
Magick++ provides integrated support for the Standard Template Library (STL) which is part of the standard C++ language so that the powerful containers available (e.g. deque, vector, list, and map) can be used to write programs similar to those possible with PERL & PerlMagick. STL-compatible template versions of GraphicsMagick's list-style operations are provided so that operations may be performed on multiple images stored in STL containers.
Magick++ provides a simple C++ API to the GraphicsMagick image processing library which supports reading and writing a huge number of image formats as well as supporting a broad spectrum of traditional image processing operations. The GraphicsMagick C API is complex and the data structures are not well documented. Magick++ provides access to most of the features available from the C API but in a simple object-oriented and well-documented framework.
Magick++ is intended to support commercial-grade application development. In order to avoid possible conflicts with the user's application, all symbols contained in Magick++ (included by the header <Magick++.h>) are scoped to the namespace Magick. Symbols from the GraphicsMagick C library are imported under the MagickLib namespace to avoid possible conflicts and GraphicsMagick macros are only included within the Magick++ implementation so they won't impact the user's application.
The InitializeMagick() function MUST be invoked before constructing any Magick++ objects. This used to be optional, but now it is absolutely required. This function initalizes semaphores and configuration information necessary