GraphicsMagick 1.3.20 Released

Bob Friesenhahn <[email protected]> Sat, 16 Aug 2014 20:28:25 -0500 (CDT)
Newsgroups gmane.comp.video.graphicsmagick.announce
Message-ID <[email protected]>
GraphicsMagick 1.3.20 is now available.  This is the release 
recommended for use.  Please visit http://www.graphicsmagick.org/ to 
learn more about GraphicsMagick or download the release.  Please 
report any issues to the bug tracker.

The following are the significant changes since the 1.3.19 release:

Special Issues:

   * Due to GCC bug 53967, several key agorithms (e.g. convolution) may
     execute much faster (e.g. 2-3X) for x86-64 and/or when SSE is
     enabled for floating point math (`-mfpmath=sse`) if the GCC option
     `-frename-registers` is used. Default 32-bit builds do not
     experience the problem since they use '387 math.  It is not clear
     in what version of GCC this problem started but it was not noticed
     by the developers until the GCC 4.6 timeframe.  Other compilers do
     not suffer from this bug.  Please lobby the GCC project to fix
     this embarrassing performance bug.

Security Fixes:

   * No security issues were reported or fixed.

Bug fixes:

   * Compilation: No longer undefine __attribute__ since this may be
     used by system or compiler headers and cause problems.

   * BMP: Alpha channel from BMP3 format was inverted.

   * PNG: Fix round-trip repeatability issue (due to rounding
     algorithm) with modern versions of libpng.  Prefer the less
     accurate method which does not alter the image.

   * PNG: Fix some memory leaks in error-handling paths.

   * PNM: Scaling of alpha in sub-ranged pixels is fixed.

   * Wand API: Removed development debug fprintf which causes each
     drawing primitive to be printed to stderr.

   * PS, PS2, PS3, PDF: Only use resolution from image or -density if
     units was properly specified.  Without units, resolution is
     worthless.

   * PS, PS2, PS3, PDF: Use resolution from image if it appears to be
     valid.

   * WebP: Fix inverted return status which caused failure to be
     reported instead of success.

   * Rotation clipping/shearing errors for short wide images at some
     angles is fixed.

   * -geometry: Deal with resize geometry missing width or height
     (e.g. '640x' or 'x480') by substituting the missing value with one
     which preserves the image aspect ratio.  This has been documented
     to be supported since almost the dawn of GraphicsMagick but was
     not actually supported until now.

   * -geometry: Support '>' and '<' qualifiers with '@' qualifier to
     specify if image should be resized if larger or lesser than given
     area specification.

New Features:

   * Wand API: MagickSetImageGravity() - New function to set image
     gravity.

   * Wand API: MagickGetImageGravity() - New function to get image
     gravity.

   * Wand API: MagickSetImageMatte() - New function to set the image
     matte channel enable flag.

   * Wand API: MagickGetImageMatte() - New function to read the image
     matte channel enable flag.

   * Wand API: MagickSetImageGeometry() - New function to set the image
     geometry string.

   * Wand API: MagickGetImageGeometry() - New function to get the image
     geometry string.

   * Wand API: MagickOperatorImageChannel() - New function to apply an
     operator to an image channel.

   * Magick++ API: New Image::thumbnail() method for fast image
     resizing, particularly to make thumbnails.

   * Core C API: Added SetLogMethod() to allow an application/library
     to specify a function to be called for logging.

   * Clang/LLVM: Provide support for clang/llvm attribute and builtin
     specifiers similar to that provided for GCC.

   * OpenMP: OpenMP native locking and thread specific data is
     supported via a configuration option (is not the default).  This
     offers a "pure" OpenMP compilation mode.  No real value for this
     compilation mode has been observed yet but it seems worthy to
     support.

   * Coders: Added BrokenCoderClass to mark coders which often
     malfunction or are not very useful in their current condition.

   * Composition: Added HardLight composition operator, which is now
     used by PSD and XCF formats, and available via command line,
     Magick++ API, PerlMagick API, and Wand API.

   * Composition: Added ScreenCompositePixels composition operator.

   * Composition: Added missing Photoshop separable compositing
     operations, Overlay, Exclusion, ColorBurn, ColorDodge, SoftLight,
     LinearBurn, LinearDodge, LinearLight, VividLight, PinLight,
     HardMix.

   * +set: Command line utilities now support +set to remove an
     existing image attribute.

   * -format: Support additional format specifiers 'g', 'A', 'C', 'D',
     'G', 'H', 'M', 'O', 'P', 'Q', 'T', 'U', 'W', 'X', and '@', similar
     to the major brand.

   * -operator: New quantum operators ThresholdBlackNegateQuantumOp and
     ThresholdWhiteNegateQuantumOp These correspond to -operator
     "Threshold-Black-Negate" and "Threshold-White-Negate".

   * TIFF: Now support setting the TIFF "Software" tag for users who do
     not want to admit to using GraphicsMagick.

   * WebP: All of the WebP encoder encoder options are now supported
     by -define arguments.


Feature improvements:

   * Pixel interpolation quality is greatly improved, with minimal
     impact on performance.  Pixel interpolation now also works well
     given an alpha channel.

   * WebP: WebP support is now prepared to compile with most WebP
     library versions and supports all features except for those
     pertaining to "RIFF" container support.

Performance Improvements:

   * Non-integral image rotation performance has been improved by about
     40%, with lower memory usage as well.

   * GradientImage: Update image is_grayscale and is_monochrome flags
     based on gradient color properties.

Windows Delegate Updates/Additions:

   * PNG: Libpng 1.6.12 - June 12, 2014.

   * JPEG: libjpeg 9a of January 19, 2014.

   * FreeType: FreeType 2.5.3 of March 6, 2014.

   * WebP: webp 0.4.0 of January 20, 2013.

   * zlib: zlib 1.2.8 of April 28, 2013.

Build Changes:

   * --without-threads no longer disables use of OpenMP.  Use the
     already existing option --disable-openmp to disable OpenMP.

   * Makefiles: Include paths are now exceedingly pedantic to make sure
     that only the required directories are included.

   * VisualMagick configure: Improve configure program so that it is
     possible to select QuantumDepth, OpenMP, and 64-bit build via
     configure dialog boxes as well as options on the command line.
     Also automatically detects and deals with similarly named files in
     subdirectories so that WebP support can now build successfully.

Behavior Changes:

   * MultiplyCompositePixels: Multiply composition now uses SVG
     interpretation of how alpha should be handled.  No longer does a
     simple multiply of alpha channel.

   * Composition: The Difference, Darken, Lighten, and HardLight
     composition operators were modified to support alpha in their
     computations.

   * PNG: Using -optimize no longer triggers palette and depth
     optimizations since their implementations have been problematic.

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

------------------------------------------------------------------------------