<?xml version="1.0"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->

<!--
This file is used by the maven-changes-plugin to generate the release notes.
Useful ways of finding items to add to this file are:

1.  Add items when you fix a bug or add a feature (this makes the 
release process easy :-).

2.  Do a Jira search for tickets closed since the previous release.

3.  Use the report generated by the maven-changelog-plugin to see all
CVS commits.  Set the project.properties' maven.changelog.range 
property to the number of days since the last release.


To generate the release notes from this file:

mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]

then tweak the source formatting if necessary and regenerate, then commit

The <action> type attribute can be add,update,fix,remove.
-->

<document xmlns="http://maven.apache.org/changes/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd">
  <properties>
    <title>Apache Commons Imaging Release Notes</title>
  </properties>
  <body>
    <release version="1.0" date="2022-??-??" description="1.0 release">
      <!-- FIX -->
      <action issue="IMAGING-335" dev="ggregory" type="fix" due-to="Dominik Stadler, Gary Gregory">
        NullPointerException in App2Segment.getIccBytes when parsing a broken JPEG file.
      </action>
      <action issue="IMAGING-342" dev="kinow" type="fix" due-to="Glavo">
        Read PNG metadata from iTXt chunk.
      </action>
      <action dev="ggregory" type="update" due-to="Gary Gregory">
        BinaryOutputStream now subclasses FilterOutputStream instead of OutputStream and does not need to count bytes.
      </action>
      <action issue="IMAGING-353" dev="ggregory" type="update" due-to="Jeroen van der Vegt, Gary Gregory">
        Fix PngImageParser hasPalette #295.
      </action>
      <!-- ADD -->
      <action issue="IMAGING-352" dev="ggregory" type="update" due-to="Jeroen van der Vegt, Gary Gregory">
        [PngWriter] Allow custom PaletteFactory #294.
      </action>
      <!-- UPDATE -->
      <action dev="kinow" type="update" due-to="Dependabot, Gary Gregory">
        Bump actions/cache from 3.0.4 to 3.0.10 #225, #228, #239, #240.
      </action>
      <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot">
        Bump actions/checkout from 3 to 3.1.0 #241.
      </action>
      <action dev="ggregory" type="update" due-to="Gary Gregory">
        Bump actions/setup-java from 3 to 3.5.1.
      </action>
      <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">
        Bump commons-parent from 52 to 58 #238, #252, #262, #293.
      </action>
      <action dev="kinow" type="update" due-to="Dependabot">
        Bump spotbugs-maven-plugin from 4.6.0.0 to 4.7.3.0 #221, #224, #226, #236, #242, #247, #248.
      </action>
      <action dev="ggregory" type="update" due-to="Dependabot">
        Bump maven-pmd-plugin from 3.16.0 to 3.20.0 #222, #232, #235, #267.
      </action>
      <action dev="kinow" type="update" due-to="Dependabot">
        Bump spotbugs from 4.7.0 to 4.7.3 #223, #244.
      </action>
      <action dev="kinow" type="update" due-to="Dependabot">
        Bump junit-jupiter from 5.8.2 to 5.9.1 #227, #237.
      </action>
      <action dev="kinow" type="update" due-to="Dependabot">
        Bump animal-sniffer-maven-plugin from 1.21 to 1.23 #230, #290.
      </action>
      <action dev="kinow" type="update" due-to="Dependabot">
        Bump maven-checkstyle plugin from 3.1.2 to 3.2.1 #233, #266.
      </action>
      <action type="update" due-to="Gary Gregory">
        Bump tests commons-io:commons-io 2.6 to 2.12.0.
      </action>
      <action issue="IMAGING-347" dev="kinow" type="update" due-to="snumlautoken">
        Refactor BasicCParser::unescapeString().
      </action>
      <action issue="IMAGING-345" dev="kinow" type="update" due-to="Matthieu Casanova">
        Make unit tests work in-memory instead of writing hundred of tmp files.
      </action>
    </release>
    <release version="1.0-alpha3" date="2022-05-13" description="Third 1.0 alpha release">
      <action issue="IMAGING-330" dev="kinow" type="fix" due-to="Gary Lucas">
        Add PNG predictor to reduce output size.
      </action>
      <action issue="IMAGING-327" dev="kinow" type="fix" due-to="Gary Lucas">
        Change getExif name to getOutputSet.
      </action>
      <action issue="IMAGING-325" dev="kinow" type="fix" due-to="Jin Wang">
        Prevent OutOfMemoryError in BmpImageParser. This can happen when the color palette length is
        a large negative number.
      </action>
      <action issue="IMAGING-320" dev="kinow" type="fix" due-to="Gary Lucas">
        Read TIFFs with 32-bit samples.
      </action>
      <action issue="IMAGING-159" dev="kinow" type="fix" due-to="Bruno P. Kinoshita, Gary Lucas, Matt Juntunen">
        The Imaging ImageParser's used HashMap's before, but on this issue we replaced the maps by proper
        ImagingParameter classes, that encapsulate the parameters for each image format.

        The Imaging class also had the HashMap methods removed, but we also removed the public methods that
        supported parameters. This was due to the complexity to handle cases where users could provide a byte
        array, or file, and parameters. In Java, with or without generics, it was rather difficult to handle
        the cases where users could provide a PNG image stream with TIFF parameters.

        To prevent issues like this, we will improve the ImageParser's API's, and work on either providing
        other ways to customize and create parsers (factories, builders, etc.) or similar ways to use
        the Imaging entry class (like merging parameters or using parameter builders.)

        This was the last blocker issue of the 1.0 release vote, rolled a few years ago.
      </action>
      <action issue="IMAGING-168" dev="kinow" type="fix" due-to="Yavuz Kavus">
        Encoding Support for IPTC metadata.
      </action>
      <action issue="IMAGING-283" dev="kinow" type="add" due-to="Wanja Gayk">
        Add CIELAB and DIN99 conversion, reduce code duplication, and issues related to zero-division and precision.
      </action>
      <action issue="IMAGING-279" dev="kinow" type="fix">
        Array sizes not checked for overflow in BmpImageParser.
      </action>
      <action dev="kinow" type="update" due-to="Dependabot">
        Bump animal-sniffer-maven-plugin from 1.19 to 1.21 #120, #199.
      </action>
      <action dev="kinow" type="update" due-to="Dependabot">
        Bump maven-checkstyle-plugin from 3.1.1 to 3.1.2 #117.
      </action>
      <action dev="kinow" type="update" due-to="Dependabot">
        Bump spotbugs from 4.0.6 to 4.7.0 #111 #118 #123 #128 #156 #160 #167 #174 #185 #188 #191 #208 #218.
      </action>
      <action dev="kinow" type="update" due-to="Dependabot">
        Bump spotbugs-maven-plugin from 4.0.4 to 4.6.0.0 #111 #115 #125 #129 #157 #171 #176 #180 #186 #192 #211.
      </action>
      <action dev="kinow" type="update" due-to="Dependabot">
        Bump maven-pmd-plugin from 3.13.0 to 3.15.0 #109 #166.
      </action>
      <action issue="IMAGING-216" dev="kinow" type="add" due-to="Gary Lucas">
        Imaging.getBufferedImage() drops alpha layer for TIFF images.
      </action>
      <action issue="IMAGING-269" dev="kinow" type="add" due-to="Gary Lucas">
        Consolidate redundant methods in TIFF datareaders.
      </action>
      <action issue="IMAGING-268" dev="kinow" type="add" due-to="Gary Lucas">
        Add list of TIFF files and example survey application.
      </action>
      <action issue="IMAGING-265" dev="kinow" type="fix" due-to="Gary Lucas">
        ArrayIndexOutOfBoundsException on reading simple GeoTIFF.
      </action>
      <action dev="kinow" type="update" due-to="Dependabot">
        Bump actions/setup-java from v1.4.0 to v3 #92 #95 #101 #127 #213.
      </action>
      <action dev="kinow" type="update" due-to="Dependabot">
        Bump commons-io from 2.7 to 2.11.0 #96 #152 #153, #158.
      </action>
      <action dev="kinow" type="update" due-to="Dependabot">
        Bump junit-jupiter from 5.6.2 to 5.8.2 #97 #119 #151 #170 #172 #187.
      </action>
      <action dev="kinow" type="update" due-to="Dependabot">
        Bump actions/checkout from v2.3.2 to v3 #99 #107 #175 #181 #205.
      </action>
      <action issue="IMAGING-264" dev="kinow" type="fix">
        BMP Parser physicalWidthDpi and physicalHeightDpi truncated before rounding off.
      </action>
      <action issue="IMAGING-263" dev="kinow" type="fix" due-to="Gary Lucas">
        Failure when reading a partial raster from a floating-point TIFF
      </action>
      <action issue="IMAGING-291" dev="kinow" type="fix" due-to="Arturo Bernal">
        Fix typos
      </action>
      <action issue="IMAGING-289" dev="kinow" type="fix" due-to="Arturo Bernal">
        Fix javadoc
      </action>
      <action issue="IMAGING-290" dev="kinow" type="update" due-to="Arturo Bernal">
        Remove redundant local variable
      </action>
      <action issue="IMAGING-288" dev="kinow" type="update" due-to="Arturo Bernal">
        Java 8 improvements
      </action>
      <action issue="IMAGING-287" dev="kinow" type="update" due-to="Arturo Bernal">
        Simplify assertions in tests
      </action>
      <action issue="IMAGING-295" dev="kinow" type="update" due-to="Arturo Bernal">
        Use 'compare()' method to compare numbers
      </action>
      <action issue="IMAGING-294" dev="kinow" type="update" due-to="Arturo Bernal">
        Use java style array declaration
      </action>
      <action issue="IMAGING-298" dev="kinow" type="update" due-to="OSS-Fuzz">
        Throw ImageReadException if the PNG parser is given an image with invalid ICC Profile.
      </action>
      <action issue="IMAGING-300" dev="kinow" type="update" due-to="OSS-Fuzz">
        Throw ImageReadException if the GIF parser is given an image with invalid image data instead of throwing IndexOutOfBoundsException.
      </action>
      <action issue="IMAGING-301" dev="kinow" type="update" due-to="OSS-Fuzz">
        Throw ImageReadException if the GIF parser is given an image with invalid Lzw table instead of throwing IndexOutOfBoundsException.
      </action>
      <action issue="IMAGING-302" dev="kinow" type="update" due-to="OSS-Fuzz">
        Throw ImageReadException if the JPEG parser is given an image with a negative number of segments in SOF0Segment.
      </action>
      <action issue="IMAGING-304" dev="kinow" type="update" due-to="Arturo Bernal">
        Use Comparator combinator
      </action>
      <action issue="IMAGING-303" dev="kinow" type="update" due-to="Arturo Bernal">
        Simplify If-else conditions
      </action>
      <action issue="IMAGING-305" dev="kinow" type="update" due-to="Arturo Bernal">
        Replace Collections.sort with list.sort
      </action>
      <action issue="IMAGING-308" dev="kinow" type="fix" due-to="Gary Lucas">
        Fix IptcParserTest on Windows
      </action>
      <action issue="IMAGING-266" dev="kinow" type="fix" due-to="Gary Lucas">
        Read integer data from GeoTIFFS
      </action>
      <action issue="IMAGING-312" dev="kinow" type="fix" due-to="Gary Lucas">
        Corrected handling of ExtraSamples tag
      </action>
      <action issue="IMAGING-285" dev="kinow" type="fix" due-to="Gary Lucas">
        Decoding of Rational Numbers broken when large values present
      </action>
      <action issue="IMAGING-314" dev="kinow" type="fix" due-to="Gary Lucas">
        Update examples, add GeoTIFF metadata to output
      </action>
      <action issue="IMAGING-311" dev="kinow" type="fix" due-to="Gary Lucas">
        Read TIFFs with multiple floating-point sampless
      </action>
      <action issue="IMAGING-315" dev="kinow" type="update" due-to="Arturo Bernal">
        Remove redundant variables
      </action>
      <action issue="IMAGING-317" dev="kinow" type="fix" due-to="OSS-Fuzz">
        A PNG image using indexed color type but no PLTE chunks throws NPE.
      </action>
      <action issue="IMAGING-318" dev="kinow" type="fix" due-to="OSS-Fuzz">
        Validate when accessing GIF color table array.
      </action>
      <action dev="kinow" type="update" due-to="Dependabot">
        Bump github/codeql-action from 1 to 2 #216
      </action>
    </release>
    <release version="1.0-alpha2" date="2020-08-01" description="Second 1.0 alpha release">
      <action issue="IMAGING-258" dev="kinow" type="update" due-to="Gary Lucas">
        Prevent exception in TIFF when reading EXIF directory
      </action>
      <action issue="IMAGING-260" dev="kinow" type="update">
        Fix mvn site failure with JavaNCSS parse error
      </action>
      <action issue="IMAGING-259" dev="kinow" type="update" due-to="Gary Lucas">
        Enhance TIFF DataReaders speed for compressed RGB
      </action>
      <action issue="IMAGING-247" dev="kinow" type="fix" due-to="Gary Lucas">
        Fix crash when reading TIFF using PackBits
      </action>
      <action issue="IMAGING-251" dev="kinow" type="update" due-to="Gary Lucas">
        Support for TIFF floating-point formats
      </action>
      <action issue="IMAGING-254" dev="kinow" type="update">
        Small code improvements
      </action>
      <action issue="IMAGING-253" dev="kinow" type="update" due-to="David Hrbacek">
        ByteSourceInputStream has initialized its length when reading starts
      </action>
      <action issue="IMAGING-249" dev="kinow" type="update">
        Make IPTCBlock members private and add getter/setter
      </action>
      <action issue="IMAGING-248" dev="kinow" type="add" due-to="Greg Shrago">
        ICNS: missing element types; some safety checks
      </action>
      <action issue="IMAGING-246" dev="kinow" type="fix">
        Invalid Block Size error prevents handling of block 1084, Macintosh NSPrintInfo
      </action>
      <action issue="IMAGING-163" dev="kinow" type="fix">
        Add XmpEmbedabble interface to parsers that support it
      </action>
      <action issue="IMAGING-245" dev="kinow" type="add" due-to="Christoffer Rydberg">
        Add disposal method to GIF metadata
      </action>
      <action issue="IMAGING-146" dev="kinow" type="add">
        Add documentation for the color package
      </action>
      <action issue="IMAGING-244" dev="kinow" type="add">
        Use isEmpty instead of comparing size() with integers
      </action>
      <action issue="IMAGING-151" dev="kinow" type="fix">
        ColorGroup.color_counts is mutable public List and is multiply sorted
      </action>
      <action issue="IMAGING-243" dev="kinow" type="add" due-to="Andreas Menze">
        PNG Writer Indexed Color with semi-transparent Pixels and Better Compression
      </action>
      <action issue="IMAGING-242" dev="kinow" type="fix">
        Upgrade to JUnit 5
      </action>
      <action issue="IMAGING-241" dev="kinow" type="fix">
        Copy byte arrays fixing TODO markers
      </action>
      <action issue="IMAGING-136" dev="kinow" type="fix" due-to="Michael Groß">
        Imaging.getImageInfo() fails to read JPEG file
      </action>
      <action issue="IMAGING-238" dev="kinow" type="fix">
        Return copied byte arrays in Png Chunk and Png Chunk ICCP
      </action>
      <action issue="IMAGING-239" dev="kinow" type="add" due-to="Paul Austin">
        Add inflate (deflate algorithm) to TIFF files
      </action>
      <action issue="IMAGING-164" dev="kinow" type="add" due-to="Michael Groß">
        Simplify code in IcoImageParser::writeImage
      </action>
      <action issue="IMAGING-165" dev="kinow" type="add" due-to="Michael Groß">
        Add the fields from TiffReader.Collector to TiffContents
      </action>
      <action issue="IMAGING-230" dev="kinow" type="fix">
        Properly close resources with try-with-resources in T4AndT6Compression
      </action>
      <action issue="IMAGING-134" dev="kinow" type="fix" due-to="Michael Sommerville">
        Invalid (RST) marker found in entropy data
      </action>
      <action issue="IMAGING-130" dev="kinow" type="fix" due-to="Michael Sommerville">
        Reading of some GIF images throws java.io.IOException: AddStringToTable: codes: 4096 code_size: 12
      </action>
      <action issue="IMAGING-228" dev="kinow" type="add">
        Remove private method PhotometricInterpreterLogLuv#cube by Math.pow
      </action>
      <action issue="IMAGING-224" dev="kinow" type="fix">
        Fix build errors in Travis
      </action>
      <action issue="IMAGING-167" dev="kinow" type="fix" due-to="Michael Groß">
        Possible infinite loop at XpmImageParser::writeImage
      </action>
      <action issue="IMAGING-211" dev="kinow" type="fix">
      	Imaging.getBufferedImage fails throwing java.lang.ArrayIndexOutOfBoundsException for specific inputs
      </action>
      <action issue="IMAGING-210" dev="kinow" type="fix">
        Imaging.getBufferedImage fails throwing NegativeArraySizeException for specific inputs
      </action>
      <action issue="IMAGING-236" dev="kinow" type="add" due-to="Christoffer Rydberg">
        Add support to read multiple images from GIF
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">
        Update tests from commons-io:commons-io 2.6 to 2.7.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Update commons-parent from 50 to 51 #88.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Update actions/checkout from v1 to v2.3.1 #87.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Update junit-jupiter from 5.5.2 to 5.6.2 #86.
      </action>
    </release>
    <release version="1.0-alpha1" date="2019-04-28" description="First 1.0 alpha release">
      <action issue="IMAGING-199" dev="kinow" type="fix" due-to="Ric Emery">
        All tEXt chunks are not returned from PngImageParser.getMetadata
      </action>
      <action issue="IMAGING-220" dev="kinow" type="fix">
        JpegDecoder takes a long time (+10s) to decode a bad JPEG
      </action>
      <action issue="IMAGING-219" dev="kinow" type="fix">
        Imaging gets stuck parsing a RGBE input file
      </action>
      <action issue="IMAGING-154" dev="kinow" type="update">
        Remove Debug class
      </action>
      <action issue="IMAGING-124" dev="kinow" type="update" due-to="Jens Kapitza">
        Tidy up IconParser
      </action>
      <action issue="IMAGING-215" dev="kinow" type="fix">
        ArrayIndexOutOfBoundsException in DhtSegment
      </action>
      <action issue="IMAGING-203" dev="kinow" type="fix" due-to="Rody Kersten">
        JPEG segment size not validated
      </action>
      <action issue="IMAGING-123" dev="kinow" type="update" due-to="Jens Kapitza">
        remove duplicated lines in T4AndT6Compression
      </action>
      <action issue="IMAGING-209" dev="kinow" type="fix" due-to="Isak Wertwein">
        PnmImageParser throws ImageWriteException when writing if PnmImageParser.PARAM_KEY_PNM_RAWBITS is provided
      </action>
      <action issue="IMAGING-205" dev="kinow" type="fix">
        Imaging (Apache Sanselan) produces "odd offsets" in (EXIF) metadata
      </action>
      <action issue="IMAGING-195" dev="britter" type="fix" due-to="Keith Strydom">
        Incorrect Maven coordinates on project website
      </action>
      <action issue="IMAGING-190" dev="sebb" type="fix">
        ImageDataReader.decompress() overwrites its input
      </action>
      <action issue="IMAGING-193" dev="sebb" type="fix">
        Duplicate class names
      </action>
      <action issue="IMAGING-189" dev="sebb" type="fix">
        parseXpmValuesSection uses &amp;&amp; instead of ||
      </action>
      <action issue="IMAGING-181" dev="damjan" type="fix">
        EXIF lens metadata tags missing in Commons Imaging but recognized in exiftool
      </action>
      <action issue="IMAGING-172" dev="damjan" type="fix">
        Microsoft tags are not seen in MS Windows Properties/Details dialog.
      </action>
      <action issue="IMAGING-186" dev="britter" type="update" due-to="Ric Emery">
        Add sCAL support to PNG reading and writing.
      </action>
      <action issue="IMAGING-176" dev="britter" type="fix" due-to="Gabriel Axel">
        TiffImageParser.getImageInfo() throws exception when "Compression" field is missing.
      </action>
      <action issue="IMAGING-178" dev="britter" type="fix" due-to="emopers">
        PnmImageParser does not check the validity of input PAM header.
      </action>
      <action issue="IMAGING-184" dev="ggregory" type="update">
        Update platform from Java 5 to 7
      </action>
      <action issue="IMAGING-112" dev="britter" type="update" due-to="Xavier Dury">
        JpegIptcRewriter.removeIPTC() does not remove all metadata
      </action>
      <action issue="IMAGING-171" dev="britter" type="fix" due-to="Jan Helbich">
        MicrosoftTagTest rewrite image exif fails in some environments
      </action>
      <action issue="IMAGING-169" dev="britter" type="fix" due-to="Nebu Pookins">
        PnmImageParser throws NumberFormatException instead of ImageReadException when parsing invalid images
      </action>
      <action issue="IMAGING-166" dev="britter" type="update" due-to="Michael Groß">
        ByteSourceImageTest: Local variable hides a field
      </action>
      <action issue="IMAGING-156" dev="britter" type="update">
        Refactor TagConstants
      </action>
      <action issue="IMAGING-144" dev="britter" type="fix" due-to="Paul Hartmann">
        TiffOutputSet.setGPSInDegrees should make sure, GPSVersionID is set
      </action>
      <action issue="IMAGING-126" dev="britter" type="update" due-to="Gary Lucas">
        TIFF and PNG images should not be bigger than the ones created by java ImageIO
      </action>
      <action issue="IMAGING-147" dev="britter" type="update" due-to="Stephan Koeninger">
        Add color constants
      </action>
      <action issue="IMAGING-150" dev="britter" type="update" due-to="Stephan Koeninger">
        Implement equals and hashcode on color classes
      </action>
      <action issue="IMAGING-117" dev="sebb" type="fix">
        Classes should not expose mutable arrays
      </action>
      <action issue="IMAGING-145" dev="ggregory" type="fix" due-to="Chris Carman">
        DumpImage method for JPEG reports it's coming from TIFF.
      </action>
      <action issue="IMAGING-137" dev="damjan" type="fix">
        Can not set EXIF_TAG_EXIF_VERSION tag.
      </action>
      <action issue="IMAGING-140" dev="damjan" type="fix" due-to="Gavin Shiels">
        ExifReWriter always writes EXIF segment before JFIF segment.
      </action>
      <action issue="IMAGING-131" dev="damjan" type="fix">
        Allow null parameters in PngImageParser.getBufferedImage(), and add some tests for null parameters.
      </action>
      <action issue="IMAGING-121" dev="damjan" type="fix" due-to="Piyush Kapoor">
        Null Pointer exception while extracting metadata for CR2 image.
      </action>
      <action issue="IMAGING-115" dev="damjan" type="fix">
        DhtSegment class contains mutable public arrays.
      </action>
      <action issue="IMAGING-117" dev="damjan" type="fix">
        SofnSegment.components - public mutable array.
      </action>
      <action issue="IMAGING-116" dev="damjan" type="fix">
        GenericSegment.bytes - public mutable array.
      </action>
      <action issue="IMAGING-118" dev="damjan" type="fix">
        interface RgbeConstants contains mutable array.
      </action>
      <action issue="IMAGING-114" dev="damjan" type="fix">
        ComSegment.comment is a public final byte array.
      </action>
      <action issue="IMAGING-109" dev="damjan" type="fix">
        Several files contain non-UTF8 characters.
      </action>
      <action issue="IMAGING-113" dev="damjan" type="fix">
        Cannot read multipage tiff.
      </action>
      <action issue="IMAGING-108" dev="damjan" type="fix">
        JPEG EOI marker could not be found at expected location.
      </action>
      <action issue="IMAGING-101" dev="ggregory" type="fix" due-to="Colm O hEigeartaigh">
        GIF dimensions transposed.
      </action>
      <action issue="IMAGING-23" dev="cmchen" type="fix">
        JpegXMPWriter throws NullPointerException.
      </action>
      <action issue="IMAGING-75" dev="cmchen" type="add">
        Added accessor methods for a number of ImageInfo properties.
      </action>
      <action issue="IMAGING-71" dev="cmchen" type="add" due-to="Nicolas Richeton">
        Applied patch contributed by Nicolas Richeton, adding getEXIFThumbnailSize() and getEXIFThumbnailData() methods to JpegImageMetadata.
      </action>
      <action issue="IMAGING-74" dev="cmchen" type="fix">
        Fixed a couple of platform-dependent paths in the tests.
        Constantized the magic numbers used when guessing formats.  
        Added a test for the format guessing.
      </action>
      <action issue="IMAGING-2" dev="cmchen" type="fix">
        SanselanGuessFormatTest and SanselanTestConstants use Java 1.5 method String.replace(CharSequence, CharSequence).
      </action>
      <action issue="IMAGING-80" dev="niallp" type="fix">
        Sanselan tests fail on Windows.
      </action>
      <action issue="IMAGING-18" dev="cmchen" type="fix" due-to="James E-J">
        Fix for "JpegImageMetadata getEXIFThumbnail only works on Jpeg thumbnails stored as Tiff images" issue.
        Jpeg thumbnails are read using ImageIO.
      </action>
      <action issue="IMAGING-48" dev="sebb" type="fix">
        JpegImageMetadata getEXIFThumbnail may raise a null pointer exception.
      </action>
      <action issue="IMAGING-56" dev="cmchen" type="add" due-to="damjan">
        Add support for the ICNS icon format.
      </action>
      <action issue="IMAGING-52" dev="cmchen" type="fix" due-to="damjan">
        Implement dumpImageFile for ICO files and fix a typo.
      </action>
       <action issue="IMAGING-58" dev="damjan" type="add">
        Add support for PCX, DCX, WBMP, XBM and XPM images.
      </action>
      <action issue="IMAGING-12" dev="damjan" type="fix" due-to="gwlucas">
        Tiff (exif) tags of type double written in wrong byte order.
      </action>
      <action issue="IMAGING-30" dev="damjan" type="fix" due-to="clement.escoffier">
        The isTransparent flag is not set on transparent PNGs.
      </action>
      <action issue="IMAGING-11" dev="damjan" type="fix">
        Ignore TIFF entries that have invalid offsets and/or lengths when we are not in strict mode.
      </action>
      <action issue="IMAGING-78" dev="damjan" type="fix">
        readDirectory method in TiffReader doesn't gracefully handle exceptions that can be thrown from ByteSource implementations.
      </action>
      <action issue="IMAGING-24" dev="damjan" type="fix">
        Search all tags instead of just EXIF tags when parsing TIFF metadata tags, and try to match on directory type as well.
      </action>
      <action issue="IMAGING-21" dev="damjan" type="fix">
        Don't allow very large TIFF lengths to be interpreted as negative because they have the highest order bit set.
      </action>
      <action issue="IMAGING-50" dev="damjan" type="fix">
        Make JPEG parsing highly resilient: skip all bytes after the end of a segment until the next segment (0xFF followed by non-0xFF).
      </action>
      <action issue="IMAGING-16" dev="damjan" type="fix">
        Fix reading ASCII tags in TIFF files.
      </action>
      <action issue="IMAGING-3" dev="damjan" type="fix">
        Ignore string differences in our tests when 7 bit unclean TIFF string are copied.
      </action>
      <action issue="IMAGING-41" dev="damjan" type="fix">
        Don't redefine BYTE_ORDER_BIG_ENDIAN and BYTE_ORDER_LITTLE_ENDIAN in UnicodeMetricsUTF16.
      </action>
      <action issue="IMAGING-64" dev="damjan" type="add">
        Add support for TIFF files with compression=2, (CCITT Group 3 1-Dimensional Modified Huffman run length encoding).
      </action>
      <action issue="IMAGING-35" dev="cmchen" type="fix">
        Fixed issue "FieldTypeASCII does not conform to the EXIF specification," identified by Libor Nenadál.
      </action>
      <action issue="IMAGING-31" dev="cmchen" type="fix">
        Fixed a bug in which gifs have incorrect size information in the Logical Screen Descriptor.
        This appears to be a bug in how Microsoft Office writes gifs. The Image Descriptor has the correct value.
      </action>
      <action issue="IMAGING-13" dev="cmchen" type="fix">
        Added checks in ByteSource's getBlock() methods for invalid params.
      </action>
      <action issue="IMAGING-46" dev="cmchen" type="fix">
        Fixed a possible NPE in Sanselan.getICCProfile pointed out by Jon Weygandt.
      </action>
      <action issue="IMAGING-76" dev="cmchen" type="fix" due-to="damjan">
        Improve ICO file support.
      </action>
      <action issue="IMAGING-49" dev="damjan" type="fix">
        Preserve the byte range occupied by the Maker Notes, so rewriting it doesn't corrupt it.
      </action>
      <action issue="IMAGING-29" dev="damjan" type="fix" due-to="alexvigdor">
        Read in the full IPTC block before trying to ignore it, so we don't lose our position in the stream.
      </action>
      <action issue="IMAGING-45" dev="damjan" type="fix" due-to="pkapoor">
        Fix the GIF BitsPerPixel formula in GifImageParser's getImageInfo().
      </action>
      <action issue="IMAGING-77" dev="damjan" type="add">
        Add a type-safe high-level API for writing TIFF fields.
      </action>
      <action issue="IMAGING-51" dev="damjan" type="add">
        Add TagInfoXpText for fields like XPTITLE, and encode/decode it using UTF-16LE like Windows does.
      </action>
      <action issue="IMAGING-39" dev="damjan" type="fix">
        Fix various problems with reading and writing EXIF tags.
      </action>
      <action issue="IMAGING-60" dev="damjan" type="add" due-to="proyal">
        Added support for reading the RGBE / Radiance HDR image format.
      </action>
      <action issue="IMAGING-68" dev="damjan" type="add">
        Add a field to IptcRecord that contains its raw bytes, and a getter for this value.
      </action>
      <action issue="IMAGING-73" dev="damjan" type="add">
        Provide a way to write EXIF data into files using Sanselan.writeImage().
      </action>
      <action issue="IMAGING-22" dev="damjan" type="fix">
        Eliminate or hide public mutable final arrays in the API.
      </action>
      <action issue="IMAGING-47" dev="damjan" type="add" due-to="adrian2k7">
        Run a Findbugs analysis on "mvn site". Also audit and fix resource leaks.
      </action>
      <action issue="IMAGING-43" dev="damjan" type="fix" due-to="pkapoor">
        If the TIFF rows per strip is not present, assume it is the image length.
      </action>
      <action issue="IMAGING-65" dev="damjan" type="add">
        Provide a way to write the pixel density (DPI) into an image.
      </action>
      <action issue="IMAGING-17" dev="damjan" type="fix" due-to="pkapoor">
        Make BitInputStream sensitive to byte order. Allows 48 BPP TIFF files to load.
      </action>
      <action issue="IMAGING-38" dev="damjan" type="fix" due-to="tjoris">
        Fix the PhysicalWidthDpi calculation for JPEG images.
      </action>
      <action issue="IMAGING-19" dev="damjan" type="fix" due-to="vvd">
        Fix reading DPI for TIFF files.
      </action>
      <action issue="IMAGING-44" dev="damjan" type="fix" due-to="vvd">
        Fix reading DPI for PNG files.
      </action>
      <action issue="IMAGING-40" dev="damjan" type="fix" due-to="pkapoor">
        Add the Software TIFF tag, and get the byte order after reading the first TIFF directory.
      </action>
      <action issue="IMAGING-6" dev="damjan" type="fix">
        Correct the expected size of the decompressed TIFF image data, and improve sample depth scaling for PNG images.
      </action>
      <action issue="IMAGING-15" dev="damjan" type="fix" due-to="pkapoor">
        Stop JpegImageMetadata from throwing NPE if the exif field is null.
      </action>
      <action issue="IMAGING-67" dev="damjan" type="fix" due-to="gwlucas">
        Speed up reading paletted TIFF files.
      </action>
      <action issue="IMAGING-8" dev="damjan" type="fix">
        Allow TIFF fields to change size during encoding. Fix a broken test that assumes they never do.
      </action>
      <action issue="IMAGING-36" dev="damjan" type="fix">
        Fix sample usage links on the website.
      </action>
      <action issue="IMAGING-70" dev="damjan" type="fix" due-to="gwlucas">
        Reduce memory usage when reading TIFF files.
      </action>
      <action issue="IMAGING-33" dev="damjan" type="fix">
        Fixed the differencing predictor for tiled TIFF images.
      </action>
      <action issue="IMAGING-5" dev="damjan" type="fix">
        Update website, fix some broken links and remove old code.
      </action>
      <action issue="IMAGING-61" dev="damjan" type="add" due-to="gwlucas">
        Include a test utility for timing and memory in project example classes.
      </action>
      <action issue="IMAGING-69" dev="damjan" type="fix" due-to="gwlucas">
        Add a streamlined TIFF reader that reduces load time by a factor of 5.
      </action>
      <action issue="IMAGING-81" dev="damjan" type="add" due-to="gwlucas">
        Add more Javadoc to main package.
      </action>
      <action issue="IMAGING-82" dev="damjan" type="fix" due-to="pkapoor">
        Fix BMP width and height DPI.
      </action>
      <action issue="IMAGING-86" dev="damjan" type="fix">
        Fix the lengths for DateTimeOriginal and DateTimeDigitized TIFF/EXIF tags.
      </action>
      <action issue="IMAGING-88" dev="damjan" type="fix" due-to="craigkelly">
        Method lowerBound in org.apache.commons.imaging.common.itu_t4.T4AndT6Compression has a division error.
      </action>
      <action issue="IMAGING-89" dev="damjan" type="add">
        Detect the YCCK color space/type in JPEG files' APP14 segment.
      </action>
      <action issue="IMAGING-92" dev="damjan" type="fix" due-to="hmarmy">
        Issue trying to update GPS metadata info in a JPG.
      </action>
      <action issue="IMAGING-91" dev="damjan" type="update">
         ByteSourceInputStream.streamLength could be a long.
      </action>
      <action issue="IMAGING-95" dev="damjan" type="update" due-to="amitgupt">
         Some tiff processing takes very long.
      </action>
      <action issue="IMAGING-93" dev="damjan" type="fix" due-to="gwlucas">
         Tiled TIFF images do not correctly load partial tiles.
      </action>
      <action issue="IMAGING-90" dev="damjan" type="fix">
         Allow non-1 TIFF field lengths when parsing offset fields in non-strict mode.
      </action>
      <action issue="IMAGING-99" dev="damjan" type="fix" due-to="st.h">
         java.io.IOException: Could not read block
      </action>
      <action issue="IMAGING-94" dev="damjan" type="add" due-to="gwlucas">
         Add ability to load partial TIFF images
      </action>
      <action issue="IMAGING-223" dev="ggregory" type="update" due-to="Gary Gregory">
         Update from Java 7 to Java 8.
      </action>
    </release>
    
  </body>
</document>
