ImageMagick Studio LLC announces the release of ImageMagick 6.0.0.

ImageMagick 6.0.0 is a robust collection of tools and libraries offered under
a usage license to read, write, and manipulate an image in many image formats
(over 89 major formats) including popular formats like TIFF, JPEG, PNG,
PDF, PhotoCD, and GIF. With ImageMagick you can create images dynamically,
making it suitable for Web applications. You can also resize, rotate, sharpen,
color reduce, or add special effects to an image or image sequence and save
your completed work in the same or differing image format. Image processing
operations are available from the command line, or from the C, C++, Perl,
Java, PHP, Python, or Ruby programming languages.  A high-quality 2D renderer
is included, which provides a subset of SVG capabilities.  ImageMagick's focus
is on performance, minimizing bugs, and providing stable APIs and ABIs.

Here are just a few examples of what ImageMagick can do:

    * Convert an image from one format to another (e.g. TIFF to JPEG)
    * Resize, rotate, sharpen, color reduce, or add special effects to an image
    * Create a montage of image thumbnails
    * Create a transparent image suitable for use on the Web
    * Turn a group of images into a GIF animation sequence
    * Create a composite image by combining several separate images
    * Draw shapes or text on an image
    * Decorate an image with a border or frame
    * Describe the format and characteristics of an image

ImageMagick is copyrighted by ImageMagick Studio LLC, a nonprofit organization
dedicated to making software imaging solutions freely available.  ImageMagick
is available for free, may be used to support both open and proprietary
applications, and may be redistributed without fee.

While the API in 6.0.0 is 100% compatible with 5.5.7, thanks to Anthony Thyssen
the command line processing has improved significantly as detailed here:

      http://www.cit.gu.edu.au/~anthony/graphics/imagick6/cmdline/

Other major improvements in ImageMagick 6.0.0 include
    * MagickWand API, a higher level C interface to the ImageMagick methods.
    * Increased stability.  The library was checked and cross-checked with
      splint and valgrind to eliminate security vulnerabilities and common
      programming mistakes as well as ensure no memory leaks.
    * A new -fx option to apply a mathematical expression to an image list from
      the command line.
    * Algorithms were improved to reduce processing requirements resulting in a
      significant speed-up over previous releases.
    * All regression tests pass at Q8, Q16, and Q32 on a variety of platforms
      including Linux, Solaris, FreeBSD, Mac OS X, and Windows. 
    * The composite methods have been corrected to precisely conform to the
      SVG standard.
    * New image comparison utility, `compare'.
    * Better support for CMYK image workflow.
    * New string handling methods to help prevent potential buffer overflow
      problems.
    * Error reporting has more detail to help identify the cause of a
      particular problem.

Other significant changes since the ImageMagick 5.5.7 release, include:

  Bug fixes:
    * Configure files in your current directory, at MAGICK_HOME, or at
      ~/.magick are read in addition to the ones in the system directory
      (.e.g you can specify your private font files in ~/.magick/type.mgk).
    * A semaphore was being reset while not under a spinlock.
    * Configure script fix ensures that -lfpx is not supplied to the C compiler
      during subsequent tests since this fails on some systems.
    * Fix for East and West gravity computations.
    * System error reports (errno) associated with an exception are now
      correctly obtained from the existing context when the exception was
      thrown rather than the context of the reporting method.
    * JNG encoder fix. Files were being written with incorrect alpha sample
      value in the header. These can be repaired by reading them into
      ImageMagick 6.0.0 and rewriting them.
    * BMP reader fix to avoid unnecessary rejection of some old uncompressed
      Windows 2.X and OS/2 BMPs.
    * XPM fix to module registration.
    * PSD fix for index calculation when QuantumDepth > 8.
    * Validate that geometry specifications (unrecognized symbols are rejected).
    * SGI fix to save compression type while writing.
    * The reported image magick string is now always that of the original input
      file (it was sometimes being reported as the format produced by an
      intermediate delegate program).
    * Fixes to color profiling of CMYK images.
    * Memory leak fixed in DrawClipPath().
    * Arc drawing is fixed.
    * Fixed possible infinite loop in Windows thread locking.
    * Scaling of colors was slightly incorrect for 16-bit BMP, AVI, DIB, and
      TIM datastreams.
    * Fixed any/all memory leaks identified by valgrind.

  Performance improvements:
    * Texture tiling is now 7X faster.
    * Image processing speed improvements due to an improved pixel cache
      algorithm.

  Utilities enhancements:
    * Added the -tint option: applies a color vector to each pixel in the
      image.  The length of the vector is 0 for black and white and at its
      maximum for the midtones.  The vector weighting function is
      f(x)=(1-(4.0*((x-0.5)*(x-0.5)))).
    * Added support for dealing with image channels.  In addition to the -fx
      option you can use -channel to operate on a particular channel for
      -level, -gamma, -threshold, and -negate.  Additional channel operators
      will be added in the next release.
    * For Unix, 'identify -list configure' lists configure and build parameters.
    * Error messages have been enhanced to display greater detail.  Use -debug
      Exception to trace the exact location within the ImageMagick source of a
      particular error.
    * Added -orient option to set the image orientation.
    * Improvements to the image profiling and clipping (new -clip-path option).
    * Added 'Save' option to animate program menu.
    * The -define option is added in order to support supplying additional
      options to coders without needing to add additional command line options
      or structure members.
    * The output of 'identify -verbose' now displays EXIF data (if present).
    * The -sampling-factor option now accepts as many HxV pairs as there are
      JPEG components.  Omitted ones default to 1x1.
    * Wildcard filename handling is enhanced to work with a subimage
      specification (e.g. '*.miff[2]').
    * Added new image comparison utility `compare' (e.g.
      compare -metric PSNR image reconstructed difference).
    * Added -separate to the convert program to separate a channel from
      an image and return a grayscale image.
    * New postfix command line operation.  See
      http://www.cit.gu.edu.au/~anthony/graphics/imagick6/cmdline/.  There is
      legacy support so existing scripts do not break.
    * Added new -annotate option for the convert and mogrify program (e.g.
      -annotate +100+100 'Some text', -annotate 30x30+100+100 'Some text').
    * Added -top, -delete, -insert, and -swap as options to the convert program
      to enhance image list manipulation.
    * Added the -radial-blur option to the convert and mogrify programs.
    * Added -family, -stretch, -style, and -weight to the convert program.
      These options are used in conjunction with -font to specify font
      attributes.
    * Added the -splice option to splice the background color into an image.
    * Added the -posterize option to reduce the image to a limited number of
      color levels.
    * Added explicit option grouping to the convert command.  Option grouping
      overrides the default behavior and applies any options to images between
      the parentheses, for example:

        convert \( 1.png 2.png -append \) \( 3.png 4.png -append \) \
          +append image.png

      returns

        +---+---+
        | 1 | 3 |
        +---+---+
        | 2 | 4 |
        +---+---+
    * Added -fx `expression' as a new special effects operator:

           convert u.png v.png -fx 'expression' result.png

      The syntax is `-fx 'expression'', and will work with the current image
      sequence in memory, with the resulting image replacing that sequence.
      Typically the source image sequence is only one or two images.

      For example, extract the matte channel of the image (this is the negative
      to what is commonly thought of as the alpha channel mask of the image)

            convert drawn.png -fx 'a' +matte matte.png

      Mathematic operators include

        constants:          MaxRGB, Opaque, Transparent, Pi
        standard operators: +, -, *, etc.
        math function name:
            abs(), acos(), asin(), atan(), cos(), exp(), log(), ln(), max(),
            min(), rand(), sin(), sqrt(),  tan()
        color names:        red, cyan, black, etc.
        symbols:
            u = first image in sequence
            v = second image in sequence
            i = current columns offset
            j = current row offset
            p = pixel to use (absolute or relative to current pixel)
            w = width of this image
            h = height of this image
            r = red value (from RGBA), of a specific or current pixel
            g = green   ''
            b = blue    ''
            a = alpha   ''
            c = cyan value of CMYK color of pixel
            y = yellow    ''
            m = magenta   ''
            k = black     ''
            intensity = pixel intensity

      The image source can be specified using an image index, starting
      at zero for the first image, (eg: `u[3]' is the fourth image in the
      image sequence).  A negative image index counts images from the end
      of the current image sequence, so  `u[-1]' refers to the last image
      in the sequence.

      Without an index `u' or `v' represent the first and second.  image of
      the sequence.  If no image is specified the `u' image is used.

      For example to reduce the intensity of the red  and green channels by
      50%, use

            convert image.png -channel red,green -fx 'u/2.0' image.jpg

      The pixels are processed one at a time, but a different pixel of a image
      can be specified with a `pixel' index.  For example...

            p[-1].g      Green value of pixel to the immediate left of current

            p[-1,-1].r   Red value, diagonally left and up from current pixel

      To specify an absolute position, use braces, rather than brackets

            p{12,34}.b   is the blue pixel at position 12,34

      The other symbols specify the value you wish to retrieve.

      A pixel outside the boundary of the image has a value dictated by the
      -virtual-pixel setting.

      The -channel setting can be used to specify the output channel of the
      result.  If no channels have been set the default is just the RGB
      (or CMYK) channels.  The alpha channel will be left as is.

      For example, suppose you want to replace the red channel of alpha.png
      with the average of the green channels from the images alpha.png and
      beta.png:

        convert alpha.png beta.png -channel red -fx '(u.g+v.g)/2' gamma.png

      Note that all the original images in the current image sequence are
      replaced by the updated `alpha.png' image.
    * Added the -evaluate method option to the convert program.  Use it to
      apply an an arithmetic, relational, or logical operator to an image.
      These operations can be used to lighten or darken an image, to increase
      or decrease constrast an an image, or to produce the "negative" of an
      image.

  Coder additions/improvments:
    * The META coder supports wide characters for the IPTC and 8BIM formats.
    * The XTRN coder now supports wide characters.
    * The MAGICK coder provides access to a large number of images (derived
      from XFig) suitable for use as patterns, or as test images.
    * The PATTERN coder now returns an image pattern tiled to size.
    * Reading and writing compressed SVG (SVGZ) is now supported.
    * The TXT coder now observes depth when writing.
    * The JPEG coder now estimates the original JPEG quality and sampling
      factors and uses these values when writing a JPEG image unless
      overwridden with the -quality option.
    * The JPEG-2000 coder now supports all Jasper library arguments (e.g.
      -define jp2:rate=0.5).
    * Added CIELab color support for TIFF and PSD images.
    * The TIFF coder now outputs colormapped images with 1, 2, and 4 bits per
      sample in order to provide much smaller file sizes for images with very
      few colors.
    * Added support for the Cineon, Dot, and SCR image formats.
    * The WPG coder now renders embedded WMFs.
    * The PS3 coder is completely re-written to work much better and support
      more features (see ChangeLog).
    * Added EPT2 and EPT3 image types which embeds Postscript level II and
      Postscript level III repectively.
    * The XC image format now accepts a CMYK color specification (e.g.
      -size 100x100 xc:'cmyk(100,100,100,50)'.
    * Modified the AVI coder to support MJPG compression.
    * Added a resample element to the MSL coder.

  Code/structure enhancements:
    * Improved handling of image profiles, including ICC, IPTC, EXIF and XMP.
      Profiles are now conveniently stored in a hashmap structure.
      The color_profile and iptc_profile members of the Image structure
      are still maintained for backwards compatibility, however, we
      encourage you to use the new PutImageProfile(), GetImageProfile(),
      and DeleteImageProfile() methods.
    * Error handling has been improved and validated through testing.  Some
      errors were being lost, unnecessarily ignored, or reported as something
      else entirely.
    * The number of error text messages to be maintained has been reduced by
      consolidating similar messages.
    * The memory allocator methods have been replaced with similar methods in
      order to eliminate warnings with GCC 3.3, avoid accidentally casting away
      const.  The previously-used functions remain in the library for the
      purpose of compatibility.
    * <magick/xwindow.h> no longer depends on magick_config.h defines.
    * The text string localization code has been replaced with a simpler
      version written by Bill Radcliffe.
    * Added key,value "define" APIs for internal use.
    * New MAGICK_CONFIGURE_PATH environment variable allows the user to
      specify the search path for configuration (.mgk) files.

  API enhancements:
    * The Wand API is a new high level interface to the ImageMagick library.
      Feel free to review or use the API now but keep in mind the
      interface may change between now and the release date.  See
      http://www.imagemagick.org/www/api.html for details.  Note that the
      ImageMagick DrawContext methods have been moved to the Wand API.
      The methods had a caveat at the beginning of the source module
      mentioning the API was not complete and to not rely on it.  Now you can!
    * API definitions is no longer dependent on types which vary in size (e.g.
      off_t) depending on large file compilation options.  This means that
      applications may now be compiled without any special large file options
      and still work properly with the library.
    * Thrown exceptions (ExceptionInfo structure) now include source file,
      source line, method name, and current system error number.
    * Added the InheritException() method to support inheriting exceptions from
      one structure to another.
    * Added the ReplaceImageInList() method to replace an image in an image
      list.
    * Added the DrawPeekGraphicContext() method to access the current DrawInfo
      structure in the drawing context stack.
    * New GetMagickList() method to conveniently return the list of supported
      image formats.
    * GetImageDepth() now returns an integral value between 1 and QuantumDepth
      and is no longer limited to the values 8, 16, and 32.
    * SetImageDepth() supports setting the image depth to any integral value
      between 1 and QuantumDepth.
    * GetImageChannelDepth() supports retrieving the modulus depth for a
      specified channel.
    * GetImageChannelExtrema() supports retrieving the extrema for the
      specified channel.
    * GetImageChannelMean() supports retrieving the mean and standard deviation
      for the specified channel.
    * Added option methods to properly parse options and/or return their
      enumerated types.
    * SetImageChannelDepth() supports setting the modulus depth for a specified
      channel.
    * ProfileImage is updated to handle alpha channels and grayscale images.
    * CompositeImage() now supports CopyCyanCompositeOp, CopyMagentaCompositeOp,
      CopyYellowCompositeOp, and CopyBlackCompositeOp, composition operators.
    * Added support for returning the image histogram in the C, C++, PerlMagick,      and MagickWand API's.
    * The semaphore.h header is no longer installed or included in the API
      headers since these methods are private interfaces.
    * Added new TrimImage() method.
    * New map option, P, for padding pixels and O, for opacity when calling the
      ConstituteImage(), ExportImagePixels(), and ImportImagePixels() methods.
    * Cache views grow dynamically now (suggested by Andrew Reid).
    * Added EvaluateImageChannel() method to the API.  Use it to apply an an
      arithmetic, relational, or logical operator to an image.  These operations
      can be used to lighten or darken an image, to increase or decrease 
      constrast an an image, or to produce the "negative" of an image.
    * Added CombineImages() to combine several grayscale images into a single
      image (e.g.  convert -channel RGB image.R image.G image.B -combine
      logo.png).
    * The next/previous members of the configuration list such as the font,
      color, and image format list are deprecated.  Instead use the new
      uniform Get????InfoList() method.  For example, use GetColorInfoList()
      to get a ColorInfo structure for each color ImageMagick knows about.
      This change was thought necessary because the next/previous pointers
      could change in a threaded environment causing dangling pointers in
      some situations.

  PerlMagick fixes/improvements:
    * Adjusted a number of method option names so that they match the
      documentation.
    * PerlMagick options use the new ImageMagick "options" API.  This
      prevents options from getting out of sync with their enumerated types.
    * Memory leak fixed.
    * Added efficient method for retrieving a group of pixels
      (e.g. $image->GetPixels(x=>0,y=>10,height=>1)).
    * Reading files (e.g. GIF) via a file descriptor is fixed.
    * Get EXIF data with $im->Get('%[EXIF:*]').

  Build improvements:
    * Configure only configures for C & C++ languages.
    * Configure now does a better job of figuring out how to build a thread-
      safe library across multiple operating systems.
    * Configure incorporates a new mmap() test.
    * Configure/build fixes for IBM's AIX operating system.
    * New -method-prefix configure option to add a unique prefix for all
      Magick API methods.
    * Updated autoconf to v2.59 and automake to v1.7.9.

  Windows-specific improvements:
    * Truetype fonts are now found under Windows 98.
    * Added a Visual C++ workspace for ImageMagickObject.
    * The static install package now uses the "uninstalled" configuration so
      that it does not depend on the Windows registry in order to run. This
      allows files from the static install package to be copied to another
      computer without running an installer.
    * The executable search path is extended at run-time to include the
      directory where the CORE DLLs reside in order to ensure that they are
      found.
    * Adding the -t option to VisualMagick configure enables building all of
      the coders into one library in order to save build time and simplify
      linkage.
    * The XTRN coder now supports wide characters.
    * IMDisplay displays a checkerboard pattern behind transparent images.
    * Support is provided for issuing log messages to the Windows standard
      logging system.
    * Updated version of LCMS used for Windows build to version 1.11.
    * ImageMagick now compiles using Visual Studio .NET 2003.
    * Updated TIFF library to V3.6.1, LCMS version to 1.12,
      FreeType version to 2.1.5, JBIG-KIT to version 1.5,
      libpng to version 1.2.5, libwmf to version 0.2.8.2, and
      zlib to version 1.2.1.
    * Support for raw camera formats such as CRW.

  VMS-specific improvements:
    * Patch to get ImageMagick working under OpenVMS again.

  License
    * There is a new ImageMagick license (see
      http://www.imagemagick.org/www/Copyright.html).  It is a Apache-style
      rather than BSD-style license to address the frequently-asked-questions
      about what the license permits you to do.  It makes it more clear, in
      plain English, that ImageMagick is free and that you can do pretty much
      whatever you want with ImageMagick as long as you don't claim you wrote
      it.

We would like to give special thanks to several people who have contributed
to ImageMagick, including:

Alexandra Christini   - Validation, packaging, and release of ImageMagick
                        6.0.0 source and binaries.
Kyle Shorter          - PerlMagick enhancements and bug fixes.
Glenn Randers-Pehrson - Utilities, PNG, MNG, test scripts, documentation
                        enhancements.
Lars Skyum            - PS3 coder and image profile enhancements.
Anthony Thyssen       - ImageMagick 6.0.0 command line improvements and
                        validation suite.

Thanks to the folks at GraphicsMagick for numerous bug reports and fixes.

And the many folks that contributed patches and enhancements as described
in http://www.imagemagick.org/www/Changelog.html.
