GraphicsMagick 1.3 Released

Bob Friesenhahn <[email protected]> Sun, 9 Nov 2008 16:20:17 -0600 (CST)
Newsgroups gmane.comp.video.graphicsmagick.announce
Message-ID <[email protected]>
I am happy to announce the release of GraphicsMagick 1.3 
(http://www.graphicsmagick.org/1.3/), the fourth major release of 
GraphicsMagick.  Except for two obscure functions which were removed, 
GraphicsMagick 1.3 is command line and API compatible with 
GraphicsMagick 1.2, which was largely compatible with previous 
releases.  While many security fixes are included, there are no 
security fixes in this release over and above those in GraphicsMagick 
1.2.5.

The major focus of this release is performance, and particularly 
peformance on multi-core hardware.  Most of the algorithms have been 
significantly re-worked, or written from scratch, to execute using 
multiple threads on multi-core hardware (see 
http://www.graphicsmagick.org/1.3/OpenMP.html).  As many of you may be 
aware, ImageMagick has been incorporating OpenMP in its many releases 
for quite some time now.  As usual, GraphicsMagick took the time to do 
things right.  The result is that GraphicsMagick 1.3 performance blows 
the doors off of the latest ImageMagick 6.4.5 release.  See 
http://www.graphicsmagick.org/1.3/benchmarks.html for the full 
benchmark report.  We plan to update the GraphicsMagick benchmark 
package so that anyone can perform these simple and irrefutable 
benchmarks for themselves on their own systems.

Besides performance, there are many bug fixes added, secure operating 
modes for server use, synchronous writes for when data loss is not an 
option, new algorithms, new APIs, and a powerful 'compare' command.

The full summary of significant changes is attached.  Please report 
any discovered bugs to the bug tracker at 
"https://sourceforge.net/tracker/?group_id=73485".

Thanks,

Bob

Security fixes:

   * AVI reader: Re-worked to be more robust against crash or DOS.

   * AVS reader: Re-worked to be more robust against crash or DOS.

   * DCM reader: Re-worked to be more robust against crash or DOS.

   * EPT reader: Re-worked to be more robust against crash or DOS.

   * FITS reader: Re-worked to be more robust against crash or DOS.

   * MTV reader: Re-worked to be more robust against crash or DOS.

   * PALM reader: Re-worked to be more robust against crash or DOS.

   * RLA reader: Re-worked to be more robust against crash or DOS.

   * TGA reader: Re-worked to be more robust against crash or DOS.

   * Avoid possible crash in GetImageCharacteristics() when substituting
     text in comment read from file.

   * Cineon reader: Fixed crash with broken file from Sami Liedes.

   * Palm reader: Fixed crash with broken files from Sami Liedes.

   * PICT reader: Fixed crash with broken files from Sami Liedes.

   * DPX reader: Validate file data better to avoid improper operation with
     intentionally (or accidentally) defective files.

   * XCF reader: Fixed crash with broken files from Sami Liedes.

Bug fixes:

   * Libbz2 is now detected for MinGW.

   * Install documentation under /usr/local/share/doc/GraphicsMagick by
     default, according to GNU conventions.

   * In PerlMagick, Dissolve composition was not working right.

   * FITS: Ensure that written format conforms to specification.

   * TIFF:

     - Don't accidentially convert CMYK images to RGB.

     - Eliminated a memory leak in the codec support detection code.

   * JPEG: Removed over-write of image->client_data.

   * PDF: Try to properly deal with reading rotated PDFs.

   * PNG: Fixed crash when writing PNG images with transparency and either
     optimize is requested, or the image is colormapped.

   * Configure: Fixed the --enable-magick-compat configure option, which
     had stopped working.

   * Configure: Fixed --without-magick-plus-plus so that it works again.  This
     stopped working in the 1.2 release cycle.

   * Configure: Fixed MagickLibVersion text string generation so that it
     is now correct when a component of the release number exceeds '9'.
     Now components can safely count up to '99' before there is a problem.

Performance Improvements:

   * OpenMP (parallel processing) improvements for these functions:

     - Affine transform (-affine -transform)
     - Average images (-average)
     - Add noise (+noise)
     - Black threshold (-black-threshold)
     - Blur (-blur)
     - Border (-border)
     - Channel import, export, and depth-setting (-channel, -depth)
     - Clip path
     - Coalesce (-coalesce)
     - Colorize (-colorize)
     - Colorspace transformation (-colorspace)
     - Compare images ('compare' command)
     - Composition ('composite' command)
     - Convolution (-convolve, -edge, -emboss, -gaussian, -sharpen)
     - Contrast adjust (-contrast)
     - Crop (-crop)
     - CycleColormap (-cycle)
     - Depth setting (-depth, -operator depth)
     - Despeckle (-despeckle)
     - Enhance (-enhance)
     - Equalize (-equalize)
     - Flatten (-flatten)
     - Flip (-flip)
     - Flop (-flop)
     - Frame (-frame)
     - Gamma adjust (-gamma, -operator gamma)
     - Gradient
     - Implode (-implode)
     - Levels adjust image (-level)
     - Local adaptive threshold (-lat)
     - Median filter (-median)
     - Minify image (-minify)
     - Modulate image (-modulate)
     - Morph image (-morph)
     - Mosiac (-mosaic)
     - Motion blur (-motion-blur)
     - Negate image (-negate)
     - Noise filter (-noise)
     - Normalize image (-normalize)
     - Oil Paint (-paint)
     - Opaque (-opaque)
     - Ordered dither (-ordered-dither)
     - Operators (-operator)
     - Profile adjust (ICC) (-profile)
     - Random threshold (-random-threshold)
     - Resize image (-resize)
     - Raise image (-raise)
     - Roll image (-roll)
     - Rotate image (-rotate)
     - Shade image (-shade)
     - Shear image (-shear)
     - Shave (-shave)
     - Solarize image (-solarize)
     - Spread image (-spread)
     - Statistics computation (identify -verbose)
     - Swirl (-swirl)
     - Threshold channel (-threshold, -operator threshold)
     - Threshold image (-threshold)
     - Transparent (-transparent)
     - Trim image (-trim)
     - UnsharpMaskImage (-unsharp)
     - Wave (-wave)
     - White threshold (-white-threshold)

   * Improved coder management performance.

   * XCF (GIMP) reader is much faster.

New Features:

   * Use MAGICK_CODER_STABILITY environment variable to enable a subset
     of the coders based on their stability classification.

   * Use MAGICK_IO_FSYNC environment variable to cause written file to
     be synchronized to disk to avoid possible data loss on power fail.

   * Added 'compare' command to statistically or visually compare two
     image files.

   * Added new channel operators (-operator):

     - Assign
     - Gamma
     - Depth
     - Negate
     - Noise-Gaussian
     - Noise-Impulse
     - Noise-Laplacian
     - Noise-Multiplicative
     - Noise-Poisson
     - Noise-Uniform
     - Threshold
     - ThresholdBlack
     - ThresholdWhite

   * New composition operators (-compose):

     - CopyBlack
     - CopyCyan
     - CopyMagenta
     - CopyYellow
     - Divide

   * Added -motion-blur to motion blur the image.

   * Mogrify and convert now support -black-threshold and -white-threshold.

   * MAT: Now supports reading compressed files.

   * FITS: Now supports 8, 16, 32 bit integer, float, and double images
     and writes correct FITS format.

   * DCRAW: Coder proxy module allows reading digital camera files as if
     they were natively supported.

   * New C API functions:

     - AddNoiseImageChannel(), add noise to an image channel.
     - BlurImageChannel(), blur an image channel.
     - GaussianBlurImageChannel(), gaussian blur an image channel.
     - ImportImageChannelsMasked(), import selected image channels.
     - SharpenImageChannel(), sharpen an image channel.
     - UnsharpMaskImageChannel(), unsharpmask an image channel.
     - New cache view interfaces to correct shortcommings of original
       ones.  New interfaces are AcquireCacheViewPixels(),
       AcquireOneCacheViewPixel(), AcquireCacheViewIndexes(),
       GetCacheViewPixels(), SetCacheViewPixels(), and
       SyncCacheViewPixels(). The deprecated functions are
       AcquireCacheView(), GetCacheView(), SetCacheView(), and
       SyncCacheView().
     - GetCacheViewRegion() reports region bounded by a cache view.
     - GetCacheViewArea() reports area bounded by a cache view.
     - ExportViewPixelArea() exports a cache view as formatted pixels.
     - ImportViewPixelArea imports formatted pixels into a cache view.

   * Removed C API functions:

     - ReadStream()
     - WriteStream()

   * Magick++ C++ API improvements

     - Color class no longer considers transparent black to be an invalid
       color.
     - New Image methods addNoiseChannel(), blurChannel(),
       gaussianBlurChannel(), motionBlur(), randomThresholdChannel(),
       randomThresholdChannel(), sharpenChannel(), unsharpmaskChannel().

Feature improvements:

   * -ordered-dither and -random-threshold may now be used to individually
     dither any named channel.
   * Mogrify and convert now support -minify to halve the image size.
   * Mogrify and convert now support -magnify to double the image size.


======================================
Bob Friesenhahn
[email protected], http://www.simplesystems.org/users/bfriesen/
GraphicsMagick Maintainer,    http://www.GraphicsMagick.org/


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/