CImg Library Changelog

What's new in CImg Library 1.4.8 Beta

Mar 15, 2011
  • Optimizations/modifications :
  • Added option to specify compression type when saving tiff files.
  • Bug corrections :
  • Corrected bounding box approximation with large fonts.

New in CImg Library 1.4.6 (Nov 18, 2010)

  • New features :
  • Optimizations/modifications :
  • 2010/09/24 : CImg::save_tiff(), Added option to specify compression type when saving tiff files.
  • Bug corrections :
  • 2010/09/23 : CImg::draw_text(), Corrected bounding box approximation with large fonts.

New in CImg Library 1.4.4 Beta (Oct 11, 2010)

  • Optimizations/modifications :
  • 2010/09/24 : CImg::save_tiff(), Added option to specify compression type when saving tiff files.
  • Bug corrections :
  • 2010/09/23 : CImg::draw_text(), Corrected bounding box approximation with large fonts.

New in CImg Library 1.4.3 Beta (Sep 22, 2010)

  • New features :
  • 2010/09/01 : Added functions 'CImg::load_camera()' to get images from cameras (uses OpenCV, new macro 'cimg_use_opencv'
  • must be defined, and openCV libraries must be linked).
  • Optimizations/modifications :
  • 2010/08/05 : Renamed function 'cimg::tac()' to 'cimg::toc()'.
  • 2010/08/13 : Expressions in mathematical parser can now end with a ';' without being invalid.
  • 2010/08/13 : Added command '-trisolve' in G'MIC in order to solve tridiagonal systems.
  • 2010/08/25 : Removed hard values cut in 'CImg::resize()' and 'CImg::rotate()' when using
  • bicubic or lanczos interpolations. You may have to check then that resulting values
  • are not out of your desired value range with these interpolations.
  • 2010/08/31 : Suppressed light buffer copy when possible, in 'CImg::draw_object3d()', speeding up
  • the rendering a little bit for phong-shaded rendering with custom light source.
  • 2010/08/31 : Various small improvements and bug corrections specific to the G'MIC interpreter.
  • Bug corrections :
  • 2010/08/10 : Small improvement in 'CImg::blur_bilateral()', suggested by Jakob Schluttig.
  • 2010/08/13 : Small bug corrected in 'CImg::draw_object3d()', avoiding wrong memory access when drawing
  • a 3d object with colors having less components than the rendering image spectrum.
  • 2010/08/24 : Forced stdin/stdout streams to be in binary mode when loading/saving images (fix a bug on Windows).

New in CImg Library 1.4.2 Beta (Sep 10, 2010)

  • New features :
  • 2010/09/01 : Added functions 'CImg::load_camera()' to get images from cameras (uses OpenCV, new macro 'cimg_use_opencv'
  • must be defined, and openCV libraries must be linked).
  • Optimizations/modifications :
  • 2010/08/05 : Renamed function 'cimg::tac()' to 'cimg::toc()'.
  • 2010/08/13 : Expressions in mathematical parser can now end with a ';' without being invalid.
  • 2010/08/13 : Added command '-trisolve' in G'MIC in order to solve tridiagonal systems.
  • 2010/08/25 : Removed hard values cut in 'CImg::resize()' and 'CImg::rotate()' when using bicubic or lanczos interpolations. You may have to check then that resulting values are not out of your desired value range with these interpolations.
  • 2010/08/31 : Suppressed light buffer copy when possible, in 'CImg::draw_object3d()', speeding up the rendering a little bit for phong-shaded rendering with custom light source.
  • 2010/08/31 : Various small improvements and bug corrections specific to the G'MIC interpreter.
  • Bug corrections :
  • 2010/08/10 : Small improvement in 'CImg::blur_bilateral()', suggested by Jakob Schluttig.
  • 2010/08/13 : Small bug corrected in 'CImg::draw_object3d()', avoiding wrong memory access when drawing a 3d object with colors having less components than the rendering image spectrum.
  • 2010/08/24 : Forced stdin/stdout streams to be in binary mode when loading/saving images (fix a bug on Windows).

New in CImg Library 1.4.1 Beta (Sep 8, 2010)

  • 2010/08/05 : Renamed function 'cimg::tac()' to 'cimg::toc()'.
  • 2010/08/13 : Expressions in mathematical parser can now end with a ';' without being invalid.
  • 2010/08/13 : Added command '-trisolve' in G'MIC in order to solve tridiagonal systems.
  • 2010/08/25 : Removed hard values cut in 'CImg::resize()' and 'CImg::rotate()' when using
  • bicubic or lanczos interpolations. You may have to check then that resulting values
  • are not out of your desired value range with these interpolations.
  • 2010/08/31 : Suppressed light buffer copy when possible, in 'CImg::draw_object3d()', speeding up
  • the rendering a little bit for phong-shaded rendering with custom light source.
  • 2010/08/31 : Various small improvements and bug corrections specific to the G'MIC interpreter.

New in CImg Library 1.4.0 Beta (Sep 3, 2010)

  • New features :
  • 2010/09/01 : Added functions 'CImg::load_camera()' to get images from cameras (uses OpenCV, new macro 'cimg_use_opencv'
  • must be defined, and openCV libraries must be linked).
  • Optimizations/modifications :
  • 2010/08/05 : Renamed function 'cimg::tac()' to 'cimg::toc()'.
  • 2010/08/13 : Expressions in mathematical parser can now end with a ';' without being invalid.
  • 2010/08/13 : Added command '-trisolve' in G'MIC in order to solve tridiagonal systems.
  • 2010/08/25 : Removed hard values cut in 'CImg::resize()' and 'CImg::rotate()' when using
  • bicubic or lanczos interpolations. You may have to check then that resulting values
  • are not out of your desired value range with these interpolations.
  • 2010/08/31 : Suppressed light buffer copy when possible, in 'CImg::draw_object3d()', speeding up
  • the rendering a little bit for phong-shaded rendering with custom light source.
  • 2010/08/31 : Various small improvements and bug corrections specific to the G'MIC interpreter.

New in CImg Library 1.3.9 Beta (Jul 28, 2010)

  • New features :
  • 2010/07/23 : Added functions 'cimg::tic()' and 'cimg::tac()', useful to display elapsed times (Thanks to JÈrome Boulanger for his suggestion and his piece of code).
  • Bug corrections :
  • 2010/07/27 : Corrected bug in 'cimg::round()', so that '-round(x)==round(-x)' is verified.
  • 2010/07/27 : Corrected bug in 'CImg::draw_text()' occuring when trying to draw text on images with more than 4 channels.

New in CImg Library 1.3.8 (Jul 20, 2010)

  • Added valid expression 'value%' in internal math parser, to be equivalent to 'value/100'.

New in CImg Library 1.3.7 (Jul 7, 2010)

  • Added functions 'CImg::object3dtoCImg3d()' and 'CImg::object3dtoCImg3d()'. They can transform a 3d object
  • into a single column vector. It supports all 3d features of CImg, including textures and opacities. So, now,
  • 3d objects can be saved as regular images, or even gathered into lists of 3d objects.
  • Added function 'CImg::watershed()' able to compute the watershed transform from an image of labels and a priority map.

New in CImg Library 1.3.6 (Jul 2, 2010)

  • Optimizations / Modifications :
  • Improved the 'gmic' tool a lot (a kind of command line version of CImg, see
  • http://gmic.sourceforge.net).
  • Bug corrections :
  • Corrected priority operator bug in math parser (operator-).
  • Corrected drawing bug in 'CImg::draw_spline()' functions.

New in CImg Library 1.3.5 (Jun 16, 2010)

  • Optimizations / Modifications :
  • 2010/04/19 : 'CImg::sort()' can now sort 'along an axis', which means only the first line of the specified axis is sorted, and
  • the other lines are permuted the same way. It may be used to avoid managing an image of permutations.
  • 2010/04/19 : It is now possible to specify a z-buffer of any datatype when drawing 3d objects. The 'CImg::display_object3d()' function
  • now uses double-valued z-buffers to get more precision when drawing 3d objects, if the specified input 3d vertices are double-valued.
  • 2010/04/19 : 'CImg::display_object3d()' : better management of the zoom in/out when focale is not set to default value.
  • Optimized memory ressources required by this function. Improved the way the pose matrix is handled.
  • 2010/04/22 : The traits 'cimg::type' have now a 'id()' method which returns an unique integer that identifies the datatype.
  • Bug corrections :
  • 2010/05/19 : Replaced unsecure string functions by their secure versions, to avoid memory buffer overflow.
  • 2010/05/14 : 'CImg::draw_line()' : Corrected clipping bug when passing very big integers.
  • 2010/04/09 : 'CImg::{load,save}_graphicsmagick()' : Added explicit calls to the GraphicsMagick initialization/destroy function
  • for better memory management.
  • 2010/04/09 : 'CImg::load_jpeg()' : Better handling of jpeg library errors (patch submitted by Martin Petricek).
  • 2010/04/23 : 'CImg::display_object3d()' : Corrected bug when light texture were switched on/off in multiple calls.

New in CImg Library 1.3.4 (Apr 8, 2010)

  • New features :
  • Added functions 'CImg::object3dtoCImg3d()' and 'CImg::object3dtoCImg3d()'. They can transform a 3d object
  • into a single column vector. It supports all 3d features of CImg, including textures and opacities. So, now,
  • 3d objects can be saved as regular images, or even gathered into lists of 3d objects.
  • Added function 'CImg::watershed()' able to compute the watershed transform from an image of labels and a priority map.
  • Optimizations / Modifications :
  • 'CImg[List]::{save,load}()' can now save and load empty images in .cimg[z] format.
  • CImg::load_bmp()' and 'CImg::{save,load}_jpeg()' have been modified to reduce memory usage.
  • Added variants of 'CImg::cubic_at*()' that can cut the interpolated value between specified bounds.
  • Modified the way colored sphere primitives are considered in 3d objects. Now, a sphere primitive takes two vertex
  • indices defining the sphere diameter.
  • Remove the support of the Carbon library for MacOSX. The code used were old and not fully functional. Use the
  • X11 implementation of the CImgDisplay class instead on MacOSX (without the XShm extension, which is not fully supported yet).
  • Modified the way the light texture is specified for phong-based 3d rendering. Now, the light must have as much channels as
  • the spectrum of the image on which the object is drawn. Then, we can do now custom colored lights in phong-shaded 3d mode.
  • Modified functions 'CImg::{load,save}_ffmpeg()' so it can compile with different API versions of the ffmpeg library.

New in CImg Library 1.3.3 (Apr 2, 2010)

  • New features :
  • Added arithmetic functions 'CImg::[get_]sign()' to compute the sign of image values.
  • Added arithmetic functions 'CImg::[get_]sinc()' to compute the sinc() function of image values.
  • Added functions 'sinc(),rol(),ror(),isval(),isint(),isnan(),isinf() and isbool()' inside the mathematical parser.
  • Added function 'CImg::cubic_atXYZ()' to access 3D voxel with a bicubic interpolator.
  • Added functions 'CImg::load_pfm()' and 'CImg::save_pfm()' to add native support of PFM files.
  • Optimizations / Modifications :
  • Updated G'MIC core and plug-in with various improvements.
  • Slight optimizations and corrections of the internal math parser.
  • Recoded most of the 'CImg::resize()' function, with faster interpolations,
  • better bicubic, and new Lanczos5 interpolation.
  • Update 'CImg::load_png()' to fit with libpng14 API.
  • Modified 'CImg::get_projections2d()' to get the minimal value instead of 0 as the intensity of
  • the bottom right area.
  • Modified 'CImg::draw_text()' to get more flexibility in the font size. Fonts are interpolated
  • when custom size is requested.
  • Removed useless font data. 4 fonts with different sizes remains now in CImg. Other sizes
  • are interpolated from these basis fonts. This reduces the header file size a lot.
  • CImg exception classes know derives from std::exception, and the 'message()' method has been
  • renamed to the more standard 'what()'.
  • Exception messages have been improved in all CImg functions and methods.
  • Bug corrections :
  • Key repetition bug corrected in 'CImg::display_plot()'.
  • Small bug corrected in arithmetic operators using math expression strings with references to current image.
  • Improved robustness of preview window in 'gmic_gimp' plug-in for GIMP.
  • Corrected bugs in 'CImg::draw_polygon()', corresponding to singular cases.
  • And as always, a lot of various bugs corrections and improvements in library and example files.

New in CImg Library 1.3.1 (May 26, 2009)

  • New features :
  • Added configuration macro 'cimg_file_separator' that takes value "/" or ""
  • depending on which OS is running. This macro is used in load/save functions
  • for better portability.
  • New example file 'examples/gaussian_fit.cpp' which demonstrates how to apply the
  • Levenberg-Marquardt algorithm to fit a 3-parameter gaussian on a set of sample points.
  • Added function 'CImg[{Display,List}]::empty()' that returns a reference to an empty object
  • (can be used to pass empty images as default values of function parameters).
  • Added variant of the function 'CImg::draw_triangle()' to draw riangle with linearly
  • interpolated colors defined at each triangle vertex.
  • Added a formula parser in CImg, so that many arithmetic operators can use it to
  • evaluate expressions (given as a C-string).
  • Added example file 'examples/plotter.cpp' that plots a mathematical function on an interactive window.
  • Added functions 'CImg::index()' and 'CImg::map()' that can index an image with a multi-spectral
  • palette, or map a multi-spectral palette on an image.
  • Optimizations / Modifications :
  • Added parameter 'bytes_per_pixel' to force the use of 8 or 16 bits modes in functions
  • 'CImg::save_magick()', 'CImg::save_pnm()' and 'CImg::save_png()'. Thanks to Julien Morat
  • for pointing this out to me.
  • Added parameter 'backward' to 'CImg::displacement_field()', allowing to select between
  • forward of backward estimation procedure.
  • Parameters 'ru,rv' in 'CImg::draw_ellipses()' have been replaced by parameter 'angle'.
  • Function 'CImg[List]::get_split()' is now able to split an image into bloc of given pixel size.
  • Changed 'zbuffer' parameter type to 'CImg' in 'CImg::draw_*' functions.
  • Remove 'GREYCstoration' specific code. The GREYCstoration algorithm is now a part of the G'MIC framework.
  • Note that the two functions 'CImg::blur_anisotropic()' and 'CImg::blur_patch()' are still here to
  • smooth an image anisotropically (are the core algorithm of the former GREYCstoration).
  • Bug corrections :
  • Corrected 'CImg::translate()' : function parameters were the opposite of the real translation done.
  • Modifications on CImg.h to be more compatible with VC++6.
  • Corrected 'CImg::get_histogram()'.
  • Corrected 'CImg::load_ascii()'.

New in CImg Library 1.2.9 (Oct 15, 2008)

  • Added new example file 'examples/captcha.cpp', which can be used to draw captcha images. This is a very short and simple code, so it can be interesting for a first approach of CImg.
  • Added functions 'CImg::scale_2x()' and 'CImg::scale_3x()' allowing to upscale an image with a edge-directed algorithm (see 'http://scale2x.sourceforge.net/')
  • Added function 'CImg::save_cpp()' allowing to save an image directly as a C/C++ source code.
  • Added function 'CImg::draw_mandelbrot()' allowing to draw quadratic mandelbrot fractal set on images.
  • Added a new demo effect 'Fish-Eye Magnification' in file 'examples/CImg_demo.cpp'.
  • Added new fields in CImgDisplay for an easy test of keys pressing. Very useful for testing complicated combinations.
  • Added functions to read/save gzipped files.
  • Added compression option for .cimg files (requires the use of the 'zlib' library).
  • Added color conversions for CMY and CMYK color bases.
  • Big code cleaning and re-organization in file 'CImg.h', making the things more clear.
  • Function 'CImg::load_ascii()' has been modified to allow comments before specifying image dimensions.
  • Functions 'CImg[List]::print()' have been slightly modified to be more precise and clear. Also used in functions 'CImg[List]::display()'.
  • Improved functionalities of the image processing tool 'inrcast.cpp'.
  • Improved 'CImg[List]::display()' function allowing easy navigation and zooming in images.
  • Add native use of ffmpeg libraries to load video sequences (Thanks to David Starkweather for his nice contribution !)
  • Optimized function 'CImg::permute_axes' for common used cases (planar to interleaved RGB and RGBA).
  • Added parameter 'step_frame' in functions that can load video sequences, i.e. CImg[List]::load_yuv(), CImg[List]::load_tiff(), CImg[List]::load_ffmpeg(), so that frames can be skipped when loading the video files.
  • Removed parameter 'events_type' in CImgDisplay functions. By default, a display is always catching all user events. Having different choices made slight problems between different architectures (and was not really useful).
  • Removed plugin 'plugins/toolbox3d.h'. Functions of the plug-ins are now natively integrated into the CImg.h file, as well as the LibBoard library support.
  • Renamed functions 'CImg::*pix?d()' to 'CImg::*at?()'.
  • Small bug in functions 'CImg[List]::contains()' were corrected.
  • Bug correction in function 'CImg::[get_]stats()' : offset of min and max values were sometimes incorrect.
  • Bug correction in CImgDisplay events for Windows-based OS. When mouse leaved a window, coordinates didn't reset to -1 sometimes.
  • Small non-computational bug correction in 'CImg::symmetric_eigen()'.
  • Removed g++ warning that occured when using 'libpng' ('warning: argument 'xxx' might be clobbered by 'longjmp' or 'vfork').
  • Corrected small illumination bug with double sided 3D objects in CImg::draw_object3d().
  • And a lot of other small improvements and bug corrections...