2019-03-04  7.0.8-31 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-31, GIT revision 15381:3122a669d:20190304

2019-03-04  7.0.8-31 Cristy  <quetzlzacatenango@image...>
  * -trim is no longer sensitive to the image virtual canvas.

2019-03-03  7.0.8-30 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-30, GIT revision 15376:16d2b4e6a:20190303

2019-03-03  7.0.8-30 Cristy  <quetzlzacatenango@image...>
  * Support define to remove additional background from an image during a
    trim, e.g. -fuzz 5% -define trim:percent-background=0% -trim.

2019-02-28  7.0.8-29 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-29, GIT revision 15368:5d8ed9f56:20190228

2019-02-28  7.0.8-29 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2019-02-18  7.0.8-28 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-28, GIT revision 15345:09a7c67dd:20190218

2019-02-12  7.0.8-28 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-02-09  7.0.8-27 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-27, GIT revision 15315:5d48cd312:20190209

2019-02-09  7.0.8-27 Cristy  <quetzlzacatenango@image...>
  * Mod patch to properly handle subimage ranges (e.g. image.gif[2-3]).

2019-02-03  7.0.8-26 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-26, GIT revision 15294:726bd82a3:20190203

2019-02-02  7.0.8-26 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-01-27  7.0.8-25 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-25, GIT revision 15279:7da783a5b:20190127

2019-01-19  7.0.8-25 Cristy  <quetzlzacatenango@image...>
  * Eliminate spurious font warning (reference
    https://github.com/ImageMagick/ImageMagick/issues/1458).
  * Support HEIC EXIF & XMP profiles.

2019-01-12  7.0.8-24 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-24, GIT revision 15233:db129ba64:20190112

2019-01-08  7.0.8-24 Cristy  <quetzlzacatenango@image...>
  * Support -clahe option real clip limit (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=35292).
  * ShadeImage() kernels can return negative pixels, clamp to range (reference
    https://github.com/ImageMagick/ImageMagick/issues/1319).
  * Annotate with negative offsets no longer renders slanted text.

2019-01-01  7.0.8-23 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-23, GIT revision 15199:ba07f7d07:20190101

2019-01-01  7.0.8-23 Cristy  <quetzlzacatenango@image...>
  * CacheInfo destructor must be aligned in DestroyPixelStream().

2018-12-30  7.0.8-22 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-22, GIT revision 15189:842164090:20181230

2018-12-29  7.0.8-22 Cristy  <quetzlzacatenango@image...>
  * Support negative rotations in a geometry (e.g. -10x-10+10+10).
  * Return expected canvas offset after a crop with gravity.

2018-12-27  7.0.8-21 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-21, GIT revision 15179:114be1716:20181227

2018-12-27  7.0.8-21 Cristy  <quetzlzacatenango@image...>
  * Check to ensure SeekBlob() offset can be represented in an off_t.

2018-12-23  7.0.8-20 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-20, GIT revision 15170:8e8222e87:20181223

2018-12-23  7.0.8-20 Cristy  <quetzlzacatenango@image...>
  * Cube image format returns a HALD image.
  * CLAHE tiles overlapped are now centered relative to the image.

2018-12-19  7.0.8-19 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-19, GIT revision 15153:e74ed77f5:20181219

2018-12-18  7.0.8-18 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-18, GIT revision 15146:b5eccd295:20181218

2018-12-18  7.0.8-18 Cristy  <quetzlzacatenango@image...>
  * Fixed Magick++ compile error on Mac OS X.

2018-12-17  7.0.8-17 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-17, GIT revision 15142:32f2d195e:20181217

2018-12-02  7.0.8-16 Cristy  <quetzlzacatenango@image...>
  * Support -clahe clip limit with percentages (e.g. -clahe 50x50%+128+3).

2018-12-10  7.0.8-16 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-16, GIT revision 15109:9a9af88de:20181210.

2018-12-02  7.0.8-16 Cristy  <quetzlzacatenango@image...>
  * Check for modulo underflow.
  * Change SVG default DPI to 96 from 90 to meet recommendation of SVG2 & CSS.

2018-12-01  7.0.8-15 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-15, GIT revision 15059:2fb22e07b:20181201

2018-11-21  7.0.8-15 Cristy  <quetzlzacatenango@image...>
  * Added support for the -clahe option: contrast limited adaptive histogram
    equalization.

2018-11-13  7.0.8-15 Dirk Lemstra <dirk@lem.....org>
  * Added support for GIMP 2.10 files (reference
    https://github.com/ImageMagick/ImageMagick/pull/1381).

2018-10-23  7.0.8-14 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-14, GIT revision 14943:1a0da3dd0:20181023

2018-10-21  7.0.8-13 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-13, GIT revision 14936:d3ec5abe2:20181021.

2018-10-04  7.0.8-13 Dirk Lemstra <dirk@lem.....org>
  * Adding coder headers with magic.xml will no longer be supported.
  * Adding coder aliases with coder.xml will no longer be supported.

2018-09-16  7.0.8-12 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-12, GIT revision 14843:cb5cf1959:20180923

2018-09-15  7.0.8-12 Dirk Lemstra <dirk@lem.....org>
  * Added support for arithmetic coding to the jpeg encoder:
    -define jpeg:arithmetic-coding=true.

2018-09-08  7.0.8-12 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-08-28  7.0.8-11 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-11, GIT revision 14729:798fbdb5b:20180828

2018-08-15  7.0.8-11 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).
  * Add support for "module" security policy.

2018-08-13  7.0.8-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-10, GIT revision 14646:48fba3256:20180813

2018-08-12  7.0.8-10 Dirk Lemstra <dirk@lem.....org>
  * Added dcraw coder (dcraw:img.cr2) that can be used to force the use of the
    dcraw delegate when libraw is the default raw delegate.
  * Restored thread support for the HEIC coder.

2018-08-08  7.0.8-10 Cristy  <quetzlzacatenango@image...>
  * ThumbnailImage function no longer reveals sensitive information (reference
    https://github.com/ImageMagick/ImageMagick/issues/1243).

2018-08-06  7.0.8-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-9, GIT revision 14618:a3663c3dc:20180805.

2018-07-24  7.0.8-9 Cristy  <quetzlzacatenango@image...>
  * XBM coder leaves the hex image data uninitialized if hex value of the
    pixel is negative.
  * More improvements to SVG text handling.
  * New -range-threshold option that combines hard and soft thresholding.

2018-07-23  7.0.8-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-8, GIT revision 14583:300fdbcfd:20180723.

2018-07-20  7.0.8-8 Cristy  <quetzlzacatenango@image...>
  * Non-HDRI ScaleLongToQuantum() private method no longer adds a half interval.
  * Fixed memset() negative-size-param (reference
    https://github.com/ImageMagick/ImageMagick/issues/1217).

2018-07-16  7.0.8-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-7, GIT revision 14561:f85c23180:20180716.

2018-07-15  7.0.8-7 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-07-08  7.0.8-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-6, GIT revision 14541:db940ccd2:20180708.

2018-07-06  7.0.8-6 Cristy  <quetzlzacatenango@image...>
  * Improve SVG support for tspan element.
  * Add support for -fx image.extent.

2018-07-04  7.0.8-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-5, GIT revision 14514:bba545bbb:20180704.

2018-07-04  7.0.8-5 Cristy  <quetzlzacatenango@image...>
  * Fixed a few potential memory leaks
    https://github.com/ImageMagick/ImageMagick/issues).

2018-07-02  7.0.8-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-4, GIT revision 14505:4613eed4a:20180702.

2018-06-28  7.0.8-4 Cristy  <quetzlzacatenango@image...>
  * Small tweaks to compile under Cygwin.
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).
  * Support %B property, the image file size without any decorations.

2018-06-24  7.0.8-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-3, GIT revision 14489:c63c504e8:20180624.

2018-06-24  7.0.8-3 Cristy  <quetzlzacatenango@image...>
  * Apply translate component of SVG transform rotate.

2018-06-18  7.0.8-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-2, GIT revision 14476:cda11d81d:20180618.

2018-06-18  7.0.8-2 Cristy  <quetzlzacatenango@image...>
  * More robust SVG text handling.

2018-06-16  7.0.8-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-1, GIT revision 14468:94cb08785:20180616.

2018-06-16  7.0.8-1 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).
  * Fixed an issue with stroke and label: (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=34142).
  * PNG: set storage class to DirectClass if alpha enabled (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=34121).

2018-06-12  7.0.8-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-0, GIT revision 14459:d7c892d5a:20180612.

2018-06-11  7.0.8-0  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-06-11  7.0.7-39 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-39, GIT revision 14445:cc962acde:20180611.

2018-06-06  7.0.7-39  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-06-02  7.0.7-38 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-38, GIT revision 14409:01e395a73:20180602.

2018-05-30  7.0.7-38  <quetzlzacatenango@image...>
  * Heap buffer overflow fix (reference
    https://github.com/ImageMagick/ImageMagick/issues/1156).
  * Boundary issues with -gamma option when HDRI is enabled (reference
    https://github.com/ImageMagick/ImageMagick/issues/1151).
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-05-29  7.0.7-37 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-37, GIT revision 14393:61d7e8b17:20180529.

2018-05-29  7.0.7-37  <quetzlzacatenango@image...>
  * Properly initialize SVG color style.

2018-05-28  7.0.7-36 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-36, GIT revision 14390:3a6bd703f:20180528.

2018-05-28  7.0.7-36  <quetzlzacatenango@image...>
  * A SVG rectangle with a width and height of 1 is a point.

2018-05-21  7.0.7-35 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-35, GIT revision 14356:13507412c:20180521.

2018-05-21  7.0.7-35  <quetzlzacatenango@image...>
  * Fixed memory corruption for MVG paths.

2018-05-20  7.0.7-34 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-34, GIT revision 14348:ac9ff6ba1:20180520.

2018-05-20  7.0.7-34 Dirk Lemstra <dirk@lem.....org>
  * Added support for reading eXIf chunks to the PNG coder.

2018-05-19  7.0.7-34  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).
  * Improved clip / composite mask handling.

2018-05-16  7.0.7-33 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-33, GIT revision 14326:58c2e4972:20180516.

2018-05-03  7.0.7-33  <quetzlzacatenango@image...>
  * Restore SetImageAlpha() behavior.
  * Fix -clip and -mask options.

2018-05-13  7.0.7-32 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-32, GIT revision 14307:f61f674e3:20180513.

2018-05-03  7.0.7-31  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-05-01  7.0.7-30 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-30, GIT revision 14242:730f1d1d3:20180501.

2018-05-01  7.0.7-30  <quetzlzacatenango@image...>
  * Missing break when checking "compliance" element.

2018-04-30  7.0.7-29 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-29, GIT revision 14225:41edbdcea:20180430.

2018-03-26  7.0.7-29  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-03-24  7.0.7-28 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-28, GIT revision 23615:edd71782e:20180325.

2018-03-21  7.0.7-28  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-03-18  7.0.7-27 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-27, GIT revision 23466:734b146df:20180318.

2018-03-17  7.0.7-27  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-03-11  7.0.7-26 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-26, GIT revision 23344:7a03766ef:20180311.

2018-03-10  7.0.7-26  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-03-04  7.0.7-25 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-25, GIT revision 23177:17a986472:20180304.

2018-03-04  7.0.7-25 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-02-25  7.0.7-24 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-24, GIT revision 23079:7ccb76178:20180225.

2018-02-19  7.0.7-24 Cristy  <quetzlzacatenango@image...>
  * Do not refer to page in OptimizeLayerFrames (reference
    https://github.com/ImageMagick/ImageMagick/pull/987).
  * PerlMagick unit tests pass again.
  * Fixed numerous use of uninitialized values, integer overflow,
    memory exceeded, and timeouts (credit to OSS Fuzz).

2018-02-18  7.0.7-23 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.0-23, GIT revision 22969:c6b3a22b0:20180218.

2018-02-09  7.0.7-23 Dirk Lemstra <dirk@lem.....org>
  * Add support for reading the HEIC image format to the Windows build.

2018-01-23  7.0.7-23 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow,
    memory exceeded, and timeouts (credit to OSS Fuzz).
  * Add list-length policy to limit the maximum image sequence length.

2018-01-22  7.0.7-22 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.0-22, GIT revision 22391:e8be814f1:20180122.

2018-01-06  7.0.7-22 Cristy  <quetzlzacatenango@image...>
  * Support aspect ratio geometry, e.g. -crop 3:2.
  * Add support for reading the HEIC image format (reference
    https://github.com/ImageMagick/ImageMagick/issues/507).
  * Fixed numerous memory leaks, credit to OSS Fuzz.

2018-01-06  7.0.7-21 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.0-21, GIT revision 22168:a91afc45b:20180106.

2018-01-06  7.0.7-21 Dirk Lemstra <dirk@lem.....org>
  * Fix some enum values in the OpenCL code.

2018-01-06  7.0.7-20 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-20, GIT revision 22161:33a04d3e5:20180105.

2018-01-05  7.0.7-20 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2018-01-01  7.0.7-19 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-19, GIT revision 22133:977fe08bf:20180101.

2017-12-29  7.0.7-19 Cristy  <quetzlzacatenango@image...>
  * Check for webpmux library version 0.4.4 (reference
    https://github.com/ImageMagick/ImageMagick/issues/896).

2017-12-26  7.0.7-18 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-18, GIT revision 22096:ad4bdeb40:20171228.

2017-12-28  7.0.7-18 Cristy  <quetzlzacatenango@image...>
  * Fix error reading from pipe under Windows (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=33288).

2017-12-26  7.0.7-17 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-17, GIT revision 22093:9caea323b:20171227.

2017-12-26  7.0.7-17 Cristy  <quetzlzacatenango@image...>
  * Fix heap use after free error (reference
    https://github.com/ImageMagick/ImageMagick/issues/918).

2017-12-24  7.0.7-16 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-16, GIT revision 22038:e55dc7626:20171225.

2017-12-18  7.0.7-16 Cristy  <quetzlzacatenango@image...>
  * Fix error reading multi-layer XCF image file.
  * Fix possible stack overflow in WEBP reader (reference
    https://github.com/ImageMagick/ImageMagick/issues/907)
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-12-16  7.0.7-15 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-15, GIT revision 21924:30cb31746:20171216.

2017-12-08  7.0.7-15 Cristy  <quetzlzacatenango@image...>
  * Overall standard deviation is the average of each pixel channel (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Update to the latest ImageMagick documentation.

2017-12-05  7.0.7-14 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-14, GIT revision 21855:dc73b2aba:20171205.

2017-11-30  7.0.7-14 Cristy  <quetzlzacatenango@image...>
  * Support Stereo composite operator.
  * Fix build failure with --without-modules (reference
    https://github.com/ImageMagick/ImageMagick/issues/890).

2017-11-30  7.0.7-13 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-13, GIT revision 21823:72cb0fd0c:20171130.

2017-11-30  7.0.7-13 Cristy  <quetzlzacatenango@image...>
  * Fix build failure with libraw 0.14.8 (reference
    https://github.com/ImageMagick/ImageMagick/issues/888).

2017-11-29  7.0.7-12 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-12, GIT revision 21814:5ef2c5a67:20171129.

2017-11-12  7.0.7-12 Cristy  <quetzlzacatenango@image...>
  * The -tint option no longer munges the alpha channel (reference
    http://imagemagick.org/discourse-server/viewtopic.php?f=1&t=33070).
  * Don't delete in-memory blob when reading an image (reference
    https://github.com/ImageMagick/ImageMagick/issues/886).
  * Support HDRI color profile management.

2017-11-11  7.0.7-11 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-11, GIT revision 21635:0447c6b46:20171111.

2017-11-05  7.0.7-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-10, GIT revision 21612:36e2aabfd:20171105.

2017-11-03  7.0.7-10 Dirk Lemstra <dirk@lem.....org>
  * Fixed a problem with resource bookkeeping in AcquireMatrixInfo().

2017-10-30  7.0.7-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-9, GIT revision 21580:2682a311e:20171031.

2017-10-20  7.0.7-9 Cristy  <quetzlzacatenango@image...>
  * Encode JSON control characters (reference
    https://github.com/ImageMagick/ImageMagick/issues/848).

2017-10-27  7.0.7-9 Dirk Lemstra <dirk@lem.....org>
  * Added support for reading mipmaps in dds images (reference
    https://github.com/ImageMagick/ImageMagick/issues/845).

2017-10-15  7.0.7-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-8, GIT revision 21507:63ffc9878:20171015.

2017-10-08  7.0.7-8 Cristy  <quetzlzacatenango@image...>
  * Return expected results for a percent 0 -chop option argument (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32806).
  * Tweaks to OpenMP support within ImageMagick.

2017-10-07  7.0.7-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-7, GIT revision 21432:29003eeed:20171007.

2017-10-06  7.0.7-7 Cristy  <quetzlzacatenango@image...>
  * Correct handling of GIF transparency (reference
    https://github.com/ImageMagick/ImageMagick/issues/831).

2017-10-04  7.0.7-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-6, GIT revision 21426:0a1cb507b:20171004.

2017-10-03  7.0.7-6 Cristy  <quetzlzacatenango@image...>
  * Reset the magick_list_initialized boolean when needed (reference
    https://github.com/ImageMagick/ImageMagick/pull/826).

2017-10-01  7.0.7-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-5, GIT revision 21382:3846f9d97:20171001.

2017-09-28  7.0.7-5 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Support URW-base35 fonts.

2017-09-26  7.0.7-5 Glenn Randers-Pehrson <glennrp@image...>
  * Removed "ping_preserve_iCCP=MagickTrue;" statement that was inadvertently
    added to coders/png.c (reference
    http://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32771).

2017-09-23  7.0.7-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-4, GIT revision 21265:bdbc14590:20170923.

2017-09-23  7.0.7-4 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/pull/763).

2017-09-17  7.0.7-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-3, GIT revision 21202:6e6907ac7:20170917.

2017-09-17  7.0.7-3 ADLab of Venustech
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/pull/763).

2017-09-15  7.0.7-3 Glenn Randers-Pehrson <glennrp@image...>
  * Stop potential leaks in the JNG decoder (reference:
    https://github.com/ImageMagick/ImageMagick/issues/760).
  * Maximum valid hour is 23, not 24, in the PNG tIME chunk, and maximum
    valid minute is 59, not 60.  

2017-09-12  7.0.7-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-2, GIT revision 21089:4e46ad9dd:20170912.

2017-09-11  7.0.7-2 Glenn Randers-Pehrson <glennrp@image...>
  * Use signed integer arithmetic to calculate timezone corrections (reference
    https://github.com/ImageMagick/ImageMagick/issues/685).

2017-09-09  7.0.7-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-1, GIT revision 21065:ab2194121:20170909.

2017-09-09  7.0.7-1 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-09-05 7.0.7-1 Dirk Lemstra <dirk@lem.....org>
  * Added -define tiff:write-layers=true to add support for writing layered
    tiff files.

2017-09-03  7.0.7-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-0, GIT revision 20996:2f8ac2203:20170903.

2017-08-28  7.0.7-0 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Don't overwrite symbolic links when the shred policy is enabled.

2017-08-27  7.0.6-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-10, GIT revision 20920:9940c367a:20170827.

2017-08-27  7.0.6-10 Cristy  <quetzlzacatenango@image...>
  * Support -metric ssim, structual similarity index.

2017-08-26  7.0.6-10 Dirk Lemstra <dirk@lem.....org>
  * Fixed thread safety issue inside the pango and librsvg decoder
    (reference: https://github.com/dlemstra/Magick.NET/issues/91).

2017-08-20  7.0.6-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-9, GIT revision 20860:3f307d8ad:20170820.

2017-08-18  7.0.6-9 Glenn Randers-Pehrson <glennrp@image...>
  * Fixed bug with writing tIME chunk when timezone has a negative offset
    (reference: https://github.com/ImageMagick/ImageMagick/issues/685)

2017-08-18  7.0.6-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-8, GIT revision 20838:e2eb79427:20170818.

2017-08-14  7.0.6-7 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Support CubicSpline resize filter.  Define the lobes with the
    -define filter:lobes={2,3,4} (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=32506).
  * Prevent assertion failure when creating PDF thumbnail (reference
    https://github.com/ImageMagick/ImageMagick/issues/674).

2017-08-12  7.0.6-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-7, GIT revision 20799:0db4d8a16:20170812.

2017-08-12  7.0.6-7 Cristy  <quetzlzacatenango@image...>
  * Improve EPS aliasing (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32497).

2017-08-11  7.0.6-7 Dirk Lemstra <dirk@lem.....org>
  * Added a new option called 'dds:fast-mipmaps' (reference
    https://github.com/ImageMagick/ImageMagick/issues/558)
  * The mipmaps of a dds image can now be created from a list of images with
    -define dds:mipmaps=fromlist (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=30236).

2017-08-10  7.0.6-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-6, GIT revision 20775:061d0fa25:20170810.

2017-08-10  7.0.6-6 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-08-10  7.0.6-6 Glenn Randers-Pehrson <glennrp@image...>
  * tests/validate.c: Show the reason for failures in the test logs,
    if available.

2017-08-03  7.0.6-6 Glenn Randers-Pehrson <glennrp@image...>
  * Put UTC time in the PNG tIME chunk instead of local time (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32447).

2017-08-02  7.0.6-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-5, GIT revision 20715:26b28d50a:20170802.

2017-08-01  7.0.6-5 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-07-29  7.0.6-5 Glenn Randers-Pehrson <glennrp@image...>
  * Properly set image->colorspace in the PNG decoder (previously
    it was setting image->gamma, but only setting image->colorspace
    for grayscale and gray-alpha images.  Reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32418).
  * Fix improper use of NULL in the JNG decoder (CVE-2017-11750, Reference
    https://github.com/ImageMagick/ImageMagick/issues/632).
  * Added "-define png:ignore-crc" option to PNG decoder. When you know
    your image has no CRC or ADLER32 errors, this can speed up decoding.
    It is also helpful in debugging bug reports from "fuzzers".

2017-07-29  7.0.6-5 Cristy  <quetzlzacatenango@image...>
  * Off by one error for gradient coder (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32416),
    https://github.com/ImageMagick/ImageMagick/issues/612).

2017-07-28  7.0.6-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-4, GIT revision 20657:4e81160d6:20170728.

2017-07-24  7.0.6-4 Cristy  <quetzlzacatenango@image...>
  * YUV coder no longer renders streaks (reference
    https://github.com/ImageMagick/ImageMagick/issues/612).
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues) including
    https://github.com/ImageMagick/ImageMagick/issues/618 (CVE-2017-12676).
  * coders/png.c: Initialized quantum_scanline and quantum_info
    to prevent a bad free (reference
    https://github.com/ImageMagick/ImageMagick/issues/621).

2017-07-25  7.0.6-4 Glenn Randers-Pehrson <glennrp@image...>
  * Removed write_chunk_from_profile() from coders/png.c because it has
    not worked at least since version 6.7.6.
  * Removed many redundant checks before RelinquishMagickMemory(), which
    is safe to call with a NULL argument.
  * Added experimental PNG orNT chunk, to store image->orientation.
  * Removed vpAg chunk write support (we are now writing caNv instead).

2017-07-24  7.0.6-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-3, GIT revision 20598:cc9c43b44:20170724.

2017-07-23  7.0.6-3 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-07-23  7.0.6-3 Glenn Randers-Pehrson <glennrp@image...>
  * Fix memory leaks when reading a malformed JNG image:
    https://github.com/ImageMagick/ImageMagick/issues/600 (CVE-2017-13141),
    https://github.com/ImageMagick/ImageMagick/issues/602 (CVE-2017-12565).

2017-07-21  7.0.6-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-2, GIT revision 20549:62fcf3d96:20170721.

2017-07-19  7.0.6-2 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * The -monochrome option no longer returns a blank canvas (reference
    https://github.com/ImageMagick/ImageMagick/issues/594).
  * coders/png.c: fixed memory leak of quantum_info (CVE-2017-11539, reference
    https://github.com/ImageMagick/ImageMagick/issues/582
  * coders/png.c: fixed NULL dereference when trying to write an empty MNG
    (CVE-2017-11522, reference
    https://github.com/ImageMagick/ImageMagick/issues/586).

2017-07-15  7.0.6-2 Glenn Randers-Pehrson <glennrp@image...>
  * Added caNv, eXIf, and pHYs to the list of PNG chunks to be removed
    by the "-strip" option.

2017-07-15  7.0.6-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-1, GIT revision 20447:c2a315e10:20170715.

2017-07-13  7.0.6-1 Glenn Randers-Pehrson <glennrp@image...>
  * Implemented PNG eXIf chunk support.

2017-07-08  7.0.6-1 Cristy  <quetzlzacatenango@image...>
  * Support new -auto-threshold option.  OTSU and Triangle methods are
    currently supported.  Look for the Kapur method in the next release.
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Don't use variable float_t / double_t, bump SO (reference
    https://github.com/ImageMagick/ImageMagick/issues/510).
  * Support DNG images with libraw delegate library.

2017-07-02  7.0.6-1 Glenn Randers-Pehrson <glennrp@image...>
  * Reject PNG file that is too small (under 60 bytes) to contain
    a valid image.
  * Reject JPEG file that is too small (under 107 bytes) to contain
    a valid image.
  * Reject JNG file that is too small (under 147 bytes) to contain
    a valid image.

2017-06-22  7.0.6-1 Glenn Randers-Pehrson <glennrp@image...>
  * Stop a memory leak in read_user_chunk_callback() (reference
    https://github.com/ImageMagick/ImageMagick/issues/517,
    CVE 2017-11310).

2017-06-10  7.0.6-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-0, GIT revision 20194:b0c0d00:20170611.

2017-06-10  7.0.6-0 Glenn Randers-Pehrson <glennrp@image...>
  * coders/png.c: Accept exIf chunks whose data segment
    erroneously begins with "Exif\0\0".

2017-06-10  7.0.6-0 Cristy  <quetzlzacatenango@image...>
  * Introduce SetMagickSecurityPolicy() (MagickCore) and
    MagickSetSecurityPolicy() (MagickWand) to set the ImageMagick security
    policy (reference https://github.com/ImageMagick/ImageMagick/issues/407).

2017-06-02  7.0.5-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-10, GIT revision 20155:38ebc02:20170602.

2017-06-01  7.0.5-10 Glenn Randers-Pehrson <glennrp@image...>
  * Removed experimental PNG zxIF chunk support; the proposal is dead.

2017-06-01  7.0.5-10 Cristy  <quetzlzacatenango@image...>
  * Fix choppy bitmap font rendering (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32071).
  * The +opaque option is not longer a noop (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32081).
  * Add support  for 'hex:' property.

2017-05-28  7.0.5-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-9, GIT revision 20113:8b67333:20170528.

2017-05-28  7.0.5-9 Cristy  <quetzlzacatenango@image...>
  * Transient error validating the JPEG-2000 image format (reference
    https://github.com/ImageMagick/ImageMagick/issues/501).
  * Properly allocate DCM image colormap (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32063).

2017-05-26  7.0.5-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-8, GIT revision 20099:870a016:20170526.

2017-05-23  7.0.5-8 Cristy  <quetzlzacatenango@image...>
  * Improper allocation of memory for IM instances without threads (reference
    https://github.com/ImageMagick/ImageMagick/issues/497).
  * Delete corrupt image from list (reference
    https://github.com/ImageMagick/ImageMagick/issues/500).

2017-05-19  7.0.5-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-6, GIT revision 20078:7ce2d38:20170519.

2017-05-15  7.0.5-7 Cristy  <quetzlzacatenango@image...>
  * Support various image operators for the compare utility (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=31938).

 2017-05-12  7.0.5-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-6, GIT revision 20039:9371904:20170512.

2017-05-10  7.0.5-6 John Cupitt <jcupitt@gmail.com>
  * Revise DICOM window and rescale handling (reference 
    https://github.com/ImageMagick/ImageMagick/pull/484)

2017-05-06  7.0.5-6 Cristy  <quetzlzacatenango@image...>
  * Restore the -alpha Shape option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31879).
  * Fix transient PDF bug (reference
    https://github.com/ImageMagick/ImageMagick/issues/463).
  * The +opaque option now works on all channels (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31862).
  * Ensure backwards compatibility for the -combine option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31855).
  * Check for EOF conditions for RLE image format.
  * Reset histogram page geometry (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31920).

2017-04-24  7.0.5-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-5, GIT revision 19915:12eec43:20170424.

2017-03-26  7.0.5-5 Cristy  <quetzlzacatenango@image...>
  * Minimize buffer copies to improve OpenCL performance.
  * Morphology thinning is no longer a no-op (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31650).
  * Patch two PCD writer problems, corrupt output and dark pixels (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=3164).
  * Support ICC based PDF's (reference
    https://github.com/ImageMagick/ImageMagick/issues/417).
  * Fix improper EPS clip path rendering (reference
    http://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31722).

2017-03-24  7.0.5-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-4, GIT revision 19754:350fff3:20170324.

2017-03-21  7.0.5-4 Cristy  <quetzlzacatenango@image...>
  * Respect -loop option for animate -window (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31619).

2017-03-17  7.0.5-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-3, GIT revision 19741:070c3fb:20170317.

2017-03-14  7.0.5-3 Cristy  <quetzlzacatenango@image...>
  * Support namespaces for the security policy.
  * Support the -authenticate option for PDF (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31530).

2017-03-11  7.0.5-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-2, GIT revision 19696:da91a7c:20170311.

2017-03-06  7.0.5-2 Cristy  <quetzlzacatenango@image...>
  * Respect throttle policy (reference
    https://github.com/ImageMagick/ImageMagick/issues/393).
  * Return proper minima / maxima (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31377).

2017-03-03  7.0.5-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-1, GIT revision 19662:b7f455a:20170303.

2017-02-21  7.0.5-1 Cristy  <quetzlzacatenango@image...>
  * Fix Spurious memory allocation message (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31438).
  * Identical images should return inf for PSNR (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31487).

2017-02-20  7.0.5-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-0, GIT revision 19616:505fea9:20170220.

2017-02-20  7.0.5-0 Cristy  <quetzlzacatenango@image...>
  * Fix transient bug with -separate option (reference
    https://github.com/ImageMagick/ImageMagick/issues/385).

2017-02-18  7.0.4-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-10, GIT revision 19608:fe757a2:20170218.

2017-02-18  7.0.4-10 Dirk Lemstra <dirk@lem.....org>
  * Fixed fd leak for webp coder (reference
    https://github.com/ImageMagick/ImageMagick/pull/382)

2017-02-15  7.0.4-10 Cristy  <quetzlzacatenango@image...>
  * Prevent random pixel data for corrupt JPEG image (bug report from
    Hirokazu Moriguchi, Sony).
  * Restore -mattecolor option.
  * Support pixel-cache and shred security policies.
  * Bump Magick++ SO.  Previously a global replace changed matteColor to
    alphaColor.

2017-02-14  7.0.4-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-9, GIT revision 19580:d474b37:20170214.

2017-02-14  7.0.4-9 Cristy  <quetzlzacatenango@image...>
  * Revert patch that did not set update trait on alpha channel.

2017-02-13  7.0.4-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-8, GIT revision 19574:7642384:20170213.

2017-02-09  7.0.4-8 Dirk Lemstra <dirk@lem.....org>
  * Fixed memory leak when creating nested exceptions in Magick++ (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=23&p=142634)

2017-02-09  7.0.4-8 Cristy  <quetzlzacatenango@image...>
  * Unbreak build without JPEG support (reference
    https://github.com/ImageMagick/ImageMagick/pull/373).
  * Document behavior change in the security policy (thanks to yoya @
    https://blog.awm.jp/2017/02/09/imagemagick-en/).
  * Return unbiased standard deviation for image statistics (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31377).
  * Don't set update trait on alpha channel (private e-mail concerning
    -levels-colors option).

2017-02-04  7.0.4-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-7, GIT revision 19513:5783e57:20170204.

2017-01-28  7.0.4-7 Cristy  <quetzlzacatenango@image...>
  * Sanitize comments that include braces for the MIFF image format (reference
    https://github.com/ImageMagick/ImageMagick/issues/368).

2017-01-27  7.0.4-7 Glenn Randers-Pehrson <glennrp@image...>
  * coders/png.c: Added support for a proposed new PNG chunk
    (zxIf, read-only) that is currently being discussed on the
    png-mng-misc at lists.sourceforge.net mailing list.  Enable
    exIf and zxIf with CPPFLAGS="-DexIf_SUPPORTED -DxzIf_SUPPORTED".
    If exIf is enabled, only the uncompressed exIF chunk will be
    written and the hex-encoded zTXt chunk containing the raw Exif
    profile won't be written.

2017-01-27  7.0.4-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-6, GIT revision 19442:4747de9:20170127.

2017-01-27  7.0.4-6 Cristy  <quetzlzacatenango@image...>
  * Uninitialized data in MAT image format (reference
    https://github.com/ImageMagick/ImageMagick/issues/362).
  * Properly auto-fit caption (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30887).
  * Correction to composite Over operator (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31282).
  * Respect gravity option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31284).

2017-01-22  7.0.4-6 Glenn Randers-Pehrson <glennrp@image...>
  * Renamed read_vpag_chunk_callback() function to png_user_chunk_callback()
    in coders/png.c
  * Implemented a private PNG caNv (canvas) chunk for remembering the
    original dimensions and offsets when an image is cropped.  Previously
    we used the oFFs and vpAg chunks for this purpose, but this had potential
    conflicts with other applications that also use the oFFs chunk.
  * coders/png.c: Added support for a proposed new PNG chunk (exIf
    read-write, eXIf read-only) that is currently being discussed on the
    png-mng-misc at lists.sourceforge.net mailing list.

2017-01-22  7.0.4-6 Dirk Lemstra <dirk@lem.....org>
  * Replaced CoderSeekableStreamFlag with CoderDecoderSeekableStreamFlag and
    CoderEncoderSeekableStreamFlag.

2017-01-21  7.0.4-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-5, GIT revision 19381:7ae396f:20170121.

2017-01-18  7.0.4-5 Cristy  <quetzlzacatenango@image...>
  * Don't set background for transparent tiled images (reference
    http://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31210).

2017-01-14  7.0.4-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-4, GIT revision 19361:a12953c:20170114.

2017-01-14  7.0.4-4 Dirk Lemstra <dirk@lem.....org>
  * Added support for RGB555, RGB565, ARGB4444 and ARGB1555 to the
    BMP encoder (reference
    https://github.com/ImageMagick/ImageMagick/issues/344).

2017-01-10  7.0.4-4 Cristy  <quetzlzacatenango@image...>
  * Recognize XML policy closing tags (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31182).
  * Fix memory leak in the MPC format.

2017-01-07  7.0.4-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-3, GIT revision 19329:930ca78:20170107.

2017-01-04  7.0.4-3 Cristy  <quetzlzacatenango@image...>
  * Increase memory allocation for TIFF pixels (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31161).

2017-01-03  7.0.4-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-2, GIT revision 19318:8766311:20170103.

2017-01-02  7.0.4-2 Cristy  <quetzlzacatenango@image...>
  * Validation unit test for MNG works again.

2016-12-31  7.0.4-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-1, GIT revision 19292:c5ccfa8:20161231.

2016-12-26  7.0.4-1 Cristy  <quetzlzacatenango@image...>
  * Initialize draw_info alpha member to OpaqueAlpha.
  * Monochrome images no longer have inverted colors (reference
    https://github.com/ImageMagick/ImageMagick/issues/332).

2016-12-18  7.0.4-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-0, GIT revision 19221:d5e8abc:20161218.

2016-12-14  7.0.4-0 Cristy  <quetzlzacatenango@image...>
 * Do not close path for linejoins of round (reference
   https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31039).

2016-12-10  7.0.3-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-10, GIT revision 19191:338f088:20161210.

2016-12-07  7.0.3-10 Cristy  <quetzlzacatenango@image...>
  * Set colorspace to sRGB if -append has non-homogenous colorspaces (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29105).
  * Respect connected-components:area-threshold define (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31006). 
  * Enable alpha channel if background color is non-opaque (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31016).
  * Return correct offset for negative index for -fx option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31019).
  * Fixed improper scaling of certain FITS images (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31028).
  * Properly center text label (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31027).

2016-12-05  7.0.3-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-9, GIT revision 19139:6fed3f1:20161205.

2016-11-26  7.0.3-9 Cristy  <quetzlzacatenango@image...>
  * Support the compare -read-mask option.
  * Support read-masks for the -modulate option.
  * Prevent buffer overflow when streaming an image (reference
    https://github.com/ImageMagick/ImageMagick/issues/312).
  * Fix possible buffer overflow when writing compressed TIFFS (vulnerability
    report from Cisco Talos, CVE-2016-8707).

2016-11-15  7.0.3-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-8, GIT revision 19067:5aceded:20161125.

2016-11-18  7.0.3-8 Cristy  <quetzlzacatenango@image...>
  * Support the phash:colorspaces and phash:normalize options.
  * If a convenient line break is not found, force it for caption: (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30887).
  * Set alpha member of draw structure to OpaqueAlpha (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30894).
  * Off by 1 error when computing the standard deviation (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=30866).
  * Apply Debian patches, (reference
    https://github.com/ImageMagick/ImageMagick/issues/304).
  * Permit EPT images with just a TIFF or EPS image, not both (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30921).
  * The -clone option no longer leaks memory.
  * Render to clip mask rather than image for clip-path MVG graphics primitive.

2016-11-15  7.0.3-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-7, GIT revision 19024:87aca83:20161115.

2016-11-10  7.0.3-7 Cristy  <quetzlzacatenango@image...>
  * Web pages were broken when we moved to HTTPS protocol.

2016-11-08  7.0.3-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-6, GIT revision 19001:4cff747:20161108.

2016-11-01  7.0.3-6 Cristy  <quetzlzacatenango@image...>
  * Off by one memory allocation (reference
    https://github.com/ImageMagick/ImageMagick/issues/296).
  * The -extent option now matches the results of IMv6 (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=30779).
  * Prevent fault in MSL interpreter (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30797).
  * Mask composite produces proper results for the convert utility (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29675).
    

2016-10-10  7.0.3-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-5, GIT revision 18975:a8174a2:20161030.

2016-10-16  7.0.3-5 Dirk Lemstra <dirk@lem.....org>
  * Added layer RLE compression to the PSD encoder.

2016-10-10  7.0.3-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-4, GIT revision 18937:83da034:20161010.

2016-10-10  7.0.3-4 Dirk Lemstra <dirk@lem.....org>
  * Fixed incorrect parsing with ordered dither. (reference
    https://github.com/ImageMagick/ImageMagick/issues/254)

2016-10-10  7.0.3-4 Cristy  <quetzlzacatenango@image...>
  * Unit test pass again after small SUN image patch.

2016-10-08  7.0.3-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-3, GIT revision 18924:d6614e7:20161008.

2016-10-07  7.0.3-3 Dirk Lemstra <dirk@lem.....org>
  * Fixed incorrect RLE decoding when reading a DCM image that contains
    multiple segments.

2016-10-02  7.0.3-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-2, GIT revision 18887:6b27c5b:20161002.

2016-09-27  7.0.3-2 Dirk Lemstra <dirk@lem.....org>
  * Fixed incorrect RLE decoding when reading an SGI image (reference 
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30514)

2016-09-20  7.0.3-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-1, GIT revision 18851:ad91ea8:20160920.

2016-09-16  7.0.3-1 Dirk Lemstra <dirk@lem.....org>
  * Added layer RLE compression to the PSD encoder.
  * Added define 'psd:preserve-opacity-mask' to preserve the opacity mask
    in a PSD file.
  * Fixed issue where the display window was used instead of the data window
    when reading EXR files (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&p=137849).

2016-09-05  7.0.3-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-0, GIT revision 18786:10aa64c:20160905.

2016-08-29  7.0.3-0 Dirk Lemstra <dirk@lem.....org>
  * Fixed reading DXT1 images with an alpha channel.
  * Fixed incorrect padding calculation in PSD encoder.

2016-08-27  7.0.2-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-10, GIT revision 18750:e3335b3:20160827.

2016-08-27  7.0.2-10 Dirk Lemstra <dirk@lem.....org>
  * Added define 'psd:additional-info' to preserve the additional information
    in a PSD file.

2016-08-15  7.0.2-10 Cristy  <quetzlzacatenango@image...>
  * Prevent buffer overflow in BMP & SGI coders (bug report from
    pwchen&rayzhong of tencent).
  * Prevent buffer overflow and other problems in SIXEL, PDB, MAP, TIFF and
    CALS coders (bug report from Donghai Zhu).
  * The -stream option now increments the pixel pointer properly (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30327).

2016-08-14  7.0.2-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-9, GIT revision 18707:2c02f09:20160814.

2016-08-14  7.0.2-9 Cristy  <quetzlzacatenango@image...>
  * Fix compile error in opencl.c (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30289).
  * Eliminate compiler warning.

2016-08-14  7.0.2-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-8, GIT revision 18698:74b1d5d:20160814.

2016-08-07  7.0.2-8 Cristy  <quetzlzacatenango@image...>
  * Prevent spurious removal of MPC cache files (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30256).
  * Note alpha channel when combining 4 or more images (reference
    https://github.com/ImageMagick/ImageMagick/issues/250).

2016-08-06  7.0.2-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-7, GIT revision 10980:ecc03a2:20160806.

2016-08-01  7.0.2-7 Cristy  <quetzlzacatenango@image...>
  * Evaluate lazy pixel cache morphology to prevent buffer overflow (bug report
    from Ibrahim M. El-Sayed).
  * Prevent buffer overflow (bug report from Max Thrane).
  * Prevent memory use after free (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30245).

2016-07-30  7.0.2-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-6, GIT revision 18651:df24175:20160729.

2016-07-29  7.0.2-6 Cristy  <quetzlzacatenango@image...>
  * Support -region option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=29692).

2016-07-21  7.0.2-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-5, GIT revision 18627:2b5ddbd:20160721.

2016-07-13  7.0.2-5 Cristy  <quetzlzacatenango@image...>
  * Fix MVG stroke-opacity (reference
    https://github.com/ImageMagick/ImageMagick/issues/229).
  * Prevent possible buffer overflow when reading TIFF images (bug report from
    Shi Pu of MS509 Team).
  * Initialize index channel to get expected results from the stegano coder.

2016-07-11  7.0.2-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-4, GIT revision 18591:50debe5:20160710.

2016-07-10  7.0.2-4 Cristy  <quetzlzacatenango@image...>
  * To comply with the SVG standard, use stroke-opacity for transparent strokes.
  * Define CompositeChannels mask to Red, Green, Blue, Alpha, and Black.

2016-07-09  7.0.2-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-3, GIT revision 18572:28560fc:20160709.

2016-07-01  7.0.2-3 Cristy  <quetzlzacatenango@image...>
  * Patch so -kuwahara option can preserve colormapped edges.
  * The histogram coder now returns the correct extent.
  * Use CopyMagickString() rather than CopyMagickMemory() for strings.

2016-06-26  7.0.2-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-2, GIT revision 18514:a7b5b46:20160626.

2016-06-23  7.0.2-2 Cristy  <quetzlzacatenango@image...>
  * Correct for numerical instability (reference
    https://github.com/ImageMagick/ImageMagick/issues/218).
			 
2016-06-21  7.0.2-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-1, GIT revision 18479:931319b:20160622.

2016-06-17  7.0.2-1 Dirk Lemstra <dirk@lem.....org>
  * Added support for GROUP4 compression to the FAX coder.

2016-06-12  7.0.2-1 Cristy  <quetzlzacatenango@image...>
  * Distort no longer converts grayscale image to sRGB (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=29895).
  * Don't return a zero bounding box for QueryMultilineFontMetrics() (reference
    https://github.com/ImageMagick/ImageMagick/issues/222).

2016-06-12  7.0.2-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-0, GIT revision 10884:f0e15e8:20160612.

2016-06-09  7.0.2-0 Cristy  <quetzlzacatenango@image...>
  * Backoff finite precision epsilon (reference
    https://github.com/ImageMagick/ImageMagick/issues/215).
  * Fix drawing glitch for stroke widths greater than 2 (reference
    https://github.com/ImageMagick/ImageMagick/issues/218).

2016-06-05  7.0.1-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-10, GIT revision 18406:ba4ad2d:20160607.

2016-06-04  7.0.1-10 Cristy  <quetzlzacatenango@image...>
  * Deny indirect reads by policy, remove policy to permit, e.g.,
    convert caption:@mytext.txt ...
  * RLE check for pixel offset less than 0 (heap overflow report from Craig
    Young).
  * Properly initialze PES blocks (reference
    https://github.com/ImageMagick/ImageMagick/issues/213).

2016-06-03  7.0.1-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-9, GIT revision 10847:339f803:20160602.

2016-06-02  7.0.1-9 Cristy  <quetzlzacatenango@image...>
  * Fix small memory leak (patch provided by Андрей Черный).
  * Coder path traversal is not authorized (bug report provided by
    Masaaki Chida).
  * Turn off alpha channel for the compare difference image (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29828).

2016-05-31  7.0.1-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-8, GIT revision 18334:97775b5:20160531.

2016-05-31  7.0.1-8 Cristy  <quetzlzacatenango@image...>
  * Support configure script --enable-pipes option to enable pipes (|) in
    filenames.
  * Support configure script --enable-indirect-reads option to enable
    indirect reads (@) in filenames.

2016-05-30  7.0.1-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-7, GIT revision 18321:5511ef5:20160530.

2016-05-25  7.0.1-7 Cristy  <quetzlzacatenango@image...>
  * Security improvements to TEXT coder broke it (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29754).
  * Fix stroke offset problem for -annotate (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29626).
  * Don't interpret -fx option arguments (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29774);
  * Add additional checks to DCM reader to prevent data-driven faults (bug
    report from Hanno Böck).

2016-05-21  7.0.1-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-6, GIT revision 18241:d4f277c:20160521.

2016-05-20  7.0.1-6 Cristy  <quetzlzacatenango@image...>
  * Fixed proper placement of text annotation for east / west gravity.

2016-05-18  7.0.1-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-5, GIT revision 10789:f7c2e89:20160518,

2016-05-18  7.0.1-5 Cristy  <quetzlzacatenango@image...>
  * Process channels independently for -channel -equalize (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29708).
  * Fix pixel cache on disk regression (reference
    https://github.com/ImageMagick/ImageMagick/issues/202).

2016-05-15  7.0.1-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-4, GIT revision 10778:52dae14:20160516.

2016-05-10  7.0.1-4 Cristy  <quetzlzacatenango@image...>
  * Prevent possible shell command injection vulnerability through the
    authenticate parameter of the PDF, PCL and XPS coders (report from
    Erez Turjeman).
  * Quote passwords when passed to a delegate program.
  * Iterate channels over source image rather than destination (bug report
    from Hanno Böck).
  * Can read geo-related EXIF metdata once-again (reference
    https://github.com/ImageMagick/ImageMagick/issues/198).
  * Sanitize all delegate emedded formatting characters.
  * Don't sync pixel cache in AcquireAuthenticCacheView() (bug report from
    Hanno Böck).

2016-05-09  7.0.1-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-3, GIT revision 10755:d540dda:20160509.

2016-05-07  7.0.1-3 Cristy  <quetzlzacatenango@image...>
  * Remove https delegate.

2016-05-06  7.0.1-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-2, GIT revision 10741:5746147:20160507.

2016-05-04  7.0.1-2 Cristy  <quetzlzacatenango@image...>
  * Check for buffer overflow in magick/draw.c/DrawStrokePolygon().
  * Replace show delegate title with image filename rather than label.
  * Fix GetNextToken() off by one error.
  * Remove support for internal ephemeral coder.

2016-05-03  7.0.1-1 Cristy  <quetzlzacatenango@image...>
  * New version 7.0.1-1, GIT revision 10723:9fc8a0c:20160503.

2016-05-03  7.0.1-1 Cristy  <quetzlzacatenango@image...>
  * Sanitize input filename for http / https delegates (improved patch).
  * Fix for possible security vulnerabilities (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=4&t=29588).

2016-04-30  7.0.1-0 Cristy  <quetzlzacatenango@image...>
  * New version 7.0.1-0, GIT revision 10716:b527bce:20160430.

2016-01-30  7.0.0-0 	Fahad-Alsaidi & ShamsaHamed
  * Add support for languages that require complex text layout (reference
    https://github.com/ImageMagick/ImageMagick/pull/88).

2012-04-27  7.0.0-0 Anthony thyssen <A.Thyssen@griffith...>
  * Allow the use of set and escapes when no images in memory
    (unless you attempt to access per-image meta-data)
    Currently does not include %[fx:...] and %[pixel:...]

2012-10-05  7.0.0-0 Anthony thyssen <A.Thyssen@griffith...>
  * Rather than replicate 'options' into 'artifacts' make a link
    from image to image_info and lookup a global option if no artifact
    is defined.

2012-09-11  7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
  * sigmoidal-contrast:
  * Remove unnecessary initial ClampToQuantum.

2012-09-10  7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
  * sigmoidal-contrast:
  * Direct computation, without LUT;
  * Fix re-declaration of i (at the top, and inside a conditional).

2012-09-04  7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
  * Add tanh/atanh clone of legacy sigmoidal map (faster & more accurate).

2012-08-08  7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
  * Add final ClampToQuantum in sigmoidal colormap loop.
  * Remove OpenMP calls from colormap update loops.

2011-08-01  7.0.0-0 Cristy  <quetzlzacatenango@image...>
  * New version 7.0.0-0.

