diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 2ed8997cf..8c6e87860 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -1,143 +1,143 @@ -Apache Commons Imaging 1.0.0-alpha5 Release Notes ----------------------------------------- - -The Apache Commons Imaging team is pleased to announce the release of Apache Commons Imaging 1.0.0-alpha5. - -Apache Commons Imaging (previously Sanselan) is a pure-Java image library. - -The 1.0.0-alpha5 release requires Java 8. - - -Fixed Bugs ----------- - -* IMAGING-319: Fix EXIF metadata is discarded when updating offsets (wrong calculation). Thanks to Stefan Oltmann, Gary Lucas. -* IMAGING-351: Fix ExifRewriterRoundtripTest that was disabled. Thanks to Stefan Oltmann, Gary Lucas, Charles Hope. - -Changes -------- - -* Bump org.apache.commons:commons-parent from 67 to 69 #382. Thanks to Dependabot. -* Bump commons-io:commons-io from 2.16.0 to 2.16.1 #385. Thanks to Dependabot. - - -Historical list of changes: https://commons.apache.org/proper/commons-imaging//changes-report.html - -For complete information on Apache Commons Imaging, including instructions on how to submit bug reports, -patches, or suggestions for improvement, see the Apache Commons Imaging website: - -https://commons.apache.org/proper/commons-imaging/ - -Download page: https://commons.apache.org/proper/commons-imaging//download_text.cgi - -Have fun! --Apache Commons Team - ------------------------------------------------------------------------------ -Apache Commons Imaging 1.0.0-alpha4 Release Notes -------------------------------------------------- - -The Apache Commons Imaging team is pleased to announce the release of Apache Commons Imaging 1.0.0-alpha4. - -Apache Commons Imaging (previously Sanselan) is a pure-Java image library. - -The 1.0.0-alpha4 release requires Java 8. - - -New features ------------- - -* IMAGING-352: [PngWriter] Allow custom PaletteFactory #294. Thanks to Jeroen van der Vegt, Gary Gregory. -* IMAGING-360: Add more TIFF compression entries to ImageInfo #311. Thanks to Gary Lucas, Gary Gregory. -* IMAGING-316: Add support for BigTIFF format #318. Thanks to Gary Lucas, Gary Gregory. -* IMAGING-369: TIFF JPEG reader encounters array bounds exception on edge cases. Thanks to Gary Lucas, Gary Gregory. -* IMAGING-339: Basic WebP Support #254. Thanks to Glavo. -* IMAGING-355: Add option to skip reading GIF metadata #301. Thanks to Andrew Khoury, Bruno P. Kinoshita, Gary Gregory. -* Add Maven property project.build.outputTimestamp for build reproducibility. Thanks to Gary Gregory. - -Fixed Bugs ----------- - -* IMAGING-335: NullPointerException in App2Segment.getIccBytes when parsing a broken JPEG file. Thanks to Dominik Stadler, Gary Gregory. -* IMAGING-342: Read PNG metadata from iTXt chunk. Thanks to Glavo. -* [StepSecurity] ci: Harden GitHub Actions #297. Thanks to step-security-bot, Gary Gregory. -* Use static imports for JUnit Assertions methods #307. Thanks to Marcono1234, Gary Gregory. -* IMAGING-359: Fix test resource file paths not being constructed properly #306. Thanks to Marcono1234, Gary Gregory. -* Do not implement Serializable in ColorCountComparator and RgbComparator. Thanks to Gary Gregory. -* Avoid java.lang.NullPointerException in org.apache.commons.imaging.formats.pcx.PcxWriter.writeImage(). Thanks to Gary Gregory. -* IMAGING-337: Make ImageInfo state correct color type #337. Thanks to Gary Lucas, Gary Gregory. -* Fail-fast on null inputs in AbstractPixelParser constructor (oss-fuzz 34180) #183. Thanks to Bruno P. Kinoshita, Gary Gregory. -* Avoid NullPointerException in TiffImageParser.checkForSubImage(TiffImagingParameters) #304. Thanks to Luzian Seiler, Ditscheridou, Bruno P. Kinoshita, Gary Gregory. -* Avoid NullPointerException in TiffImageParser.getBufferedImage() #347. Thanks to nanfangfanqie, Gary Gregory. -* IMAGING-373: Fail faster on invalid ICO file. Thanks to Milan Nikl. - -Changes -------- - -* BinaryOutputStream now subclasses FilterOutputStream instead of OutputStream and does not need to count bytes. Thanks to Gary Gregory. -* IMAGING-353: Fix PngImageParser hasPalette #295. Thanks to Jeroen van der Vegt, Gary Gregory. -* Bump actions/cache #225, #228, #239, #240. Thanks to Dependabot, Gary Gregory. -* Bump actions/checkout #241. Thanks to Gary Gregory, Dependabot. -* Bump actions/setup-java. Thanks to Gary Gregory. -* Bump commons-parent from 52 to 67. Thanks to Dependabot, Gary Gregory. -* Bump spotbugs-maven-plugin from 4.6.0.0 to 4.7.3.0 #221, #224, #226, #236, #242, #247, #248. Thanks to Dependabot. -* Bump maven-pmd-plugin from 3.16.0 to 3.20.0 #222, #232, #235, #267. Thanks to Dependabot. -* Bump spotbugs from 4.7.0 to 4.7.3 #223, #244. Thanks to Dependabot. -* Bump junit-jupiter from 5.8.2 to 5.9.1 #227, #237. Thanks to Dependabot. -* Bump animal-sniffer-maven-plugin from 1.21 to 1.23 #230, #290. Thanks to Dependabot. -* Bump maven-checkstyle plugin from 3.1.2 to 3.2.1 #233, #266. Thanks to Dependabot. -* Bump commons-io:commons-io 2.6 to 2.16.0 #380. Thanks to Gary Gregory. -* Bump commons-lang3 from 3.12.0 to 3.14.0. Thanks to Gary Gregory. -* IMAGING-347: Refactor BasicCParser::unescapeString(). Thanks to snumlautoken. -* IMAGING-345: Make unit tests work in-memory instead of writing hundred of tmp files. Thanks to Matthieu Casanova. - - -Historical list of changes: https://commons.apache.org/proper/commons-imaging//changes-report.html - -For complete information on Apache Commons Imaging, including instructions on how to submit bug reports, -patches, or suggestions for improvement, see the Apache Commons Imaging website: - -https://commons.apache.org/proper/commons-imaging/ - -Download page: https://commons.apache.org/proper/commons-imaging//download_text.cgi - -Have fun! --Apache Commons Team - ------------------------------------------------------------------------------ - +Apache Commons Imaging 1.0.0-alpha5 Release Notes +------------------------------------------------- + +The Apache Commons Imaging team is pleased to announce the release of Apache Commons Imaging 1.0.0-alpha5. + +Apache Commons Imaging (previously Sanselan) is a pure-Java image library. + +The 1.0.0-alpha5 release requires Java 8. + + +Fixed Bugs +---------- + +* IMAGING-319: Fix EXIF metadata is discarded when updating offsets (wrong calculation). Thanks to Stefan Oltmann, Gary Lucas. +* IMAGING-351: Fix ExifRewriterRoundtripTest that was disabled. Thanks to Stefan Oltmann, Gary Lucas, Charles Hope. + +Changes +------- + +* Bump org.apache.commons:commons-parent from 67 to 69 #382. Thanks to Dependabot. +* Bump commons-io:commons-io from 2.16.0 to 2.16.1 #385. Thanks to Dependabot. + + +Historical list of changes: https://commons.apache.org/proper/commons-imaging//changes-report.html + +For complete information on Apache Commons Imaging, including instructions on how to submit bug reports, +patches, or suggestions for improvement, see the Apache Commons Imaging website: + +https://commons.apache.org/proper/commons-imaging/ + +Download page: https://commons.apache.org/proper/commons-imaging//download_text.cgi + +Have fun! +-Apache Commons Team + +----------------------------------------------------------------------------- +Apache Commons Imaging 1.0.0-alpha4 Release Notes +------------------------------------------------- + +The Apache Commons Imaging team is pleased to announce the release of Apache Commons Imaging 1.0.0-alpha4. + +Apache Commons Imaging (previously Sanselan) is a pure-Java image library. + +The 1.0.0-alpha4 release requires Java 8. + + +New features +------------ + +* IMAGING-352: [PngWriter] Allow custom PaletteFactory #294. Thanks to Jeroen van der Vegt, Gary Gregory. +* IMAGING-360: Add more TIFF compression entries to ImageInfo #311. Thanks to Gary Lucas, Gary Gregory. +* IMAGING-316: Add support for BigTIFF format #318. Thanks to Gary Lucas, Gary Gregory. +* IMAGING-369: TIFF JPEG reader encounters array bounds exception on edge cases. Thanks to Gary Lucas, Gary Gregory. +* IMAGING-339: Basic WebP Support #254. Thanks to Glavo. +* IMAGING-355: Add option to skip reading GIF metadata #301. Thanks to Andrew Khoury, Bruno P. Kinoshita, Gary Gregory. +* Add Maven property project.build.outputTimestamp for build reproducibility. Thanks to Gary Gregory. + +Fixed Bugs +---------- + +* IMAGING-335: NullPointerException in App2Segment.getIccBytes when parsing a broken JPEG file. Thanks to Dominik Stadler, Gary Gregory. +* IMAGING-342: Read PNG metadata from iTXt chunk. Thanks to Glavo. +* [StepSecurity] ci: Harden GitHub Actions #297. Thanks to step-security-bot, Gary Gregory. +* Use static imports for JUnit Assertions methods #307. Thanks to Marcono1234, Gary Gregory. +* IMAGING-359: Fix test resource file paths not being constructed properly #306. Thanks to Marcono1234, Gary Gregory. +* Do not implement Serializable in ColorCountComparator and RgbComparator. Thanks to Gary Gregory. +* Avoid java.lang.NullPointerException in org.apache.commons.imaging.formats.pcx.PcxWriter.writeImage(). Thanks to Gary Gregory. +* IMAGING-337: Make ImageInfo state correct color type #337. Thanks to Gary Lucas, Gary Gregory. +* Fail-fast on null inputs in AbstractPixelParser constructor (oss-fuzz 34180) #183. Thanks to Bruno P. Kinoshita, Gary Gregory. +* Avoid NullPointerException in TiffImageParser.checkForSubImage(TiffImagingParameters) #304. Thanks to Luzian Seiler, Ditscheridou, Bruno P. Kinoshita, Gary Gregory. +* Avoid NullPointerException in TiffImageParser.getBufferedImage() #347. Thanks to nanfangfanqie, Gary Gregory. +* IMAGING-373: Fail faster on invalid ICO file. Thanks to Milan Nikl. + +Changes +------- + +* BinaryOutputStream now subclasses FilterOutputStream instead of OutputStream and does not need to count bytes. Thanks to Gary Gregory. +* IMAGING-353: Fix PngImageParser hasPalette #295. Thanks to Jeroen van der Vegt, Gary Gregory. +* Bump actions/cache #225, #228, #239, #240. Thanks to Dependabot, Gary Gregory. +* Bump actions/checkout #241. Thanks to Gary Gregory, Dependabot. +* Bump actions/setup-java. Thanks to Gary Gregory. +* Bump commons-parent from 52 to 67. Thanks to Dependabot, Gary Gregory. +* Bump spotbugs-maven-plugin from 4.6.0.0 to 4.7.3.0 #221, #224, #226, #236, #242, #247, #248. Thanks to Dependabot. +* Bump maven-pmd-plugin from 3.16.0 to 3.20.0 #222, #232, #235, #267. Thanks to Dependabot. +* Bump spotbugs from 4.7.0 to 4.7.3 #223, #244. Thanks to Dependabot. +* Bump junit-jupiter from 5.8.2 to 5.9.1 #227, #237. Thanks to Dependabot. +* Bump animal-sniffer-maven-plugin from 1.21 to 1.23 #230, #290. Thanks to Dependabot. +* Bump maven-checkstyle plugin from 3.1.2 to 3.2.1 #233, #266. Thanks to Dependabot. +* Bump commons-io:commons-io 2.6 to 2.16.0 #380. Thanks to Gary Gregory. +* Bump commons-lang3 from 3.12.0 to 3.14.0. Thanks to Gary Gregory. +* IMAGING-347: Refactor BasicCParser::unescapeString(). Thanks to snumlautoken. +* IMAGING-345: Make unit tests work in-memory instead of writing hundred of tmp files. Thanks to Matthieu Casanova. + + +Historical list of changes: https://commons.apache.org/proper/commons-imaging//changes-report.html + +For complete information on Apache Commons Imaging, including instructions on how to submit bug reports, +patches, or suggestions for improvement, see the Apache Commons Imaging website: + +https://commons.apache.org/proper/commons-imaging/ + +Download page: https://commons.apache.org/proper/commons-imaging//download_text.cgi + +Have fun! +-Apache Commons Team + +----------------------------------------------------------------------------- + The Apache Commons Imaging team is pleased to announce the commons-imaging-1.0-alpha3 release! Apache Commons Imaging (previously Sanselan) is a pure-Java image library. -New features ------------- +New features +------------ * Add CIELAB and DIN99 conversion, reduce code duplication, and issues related to zero-division and precision. Issue: IMAGING-283. Thanks to Wanja Gayk. * Imaging.getBufferedImage() drops alpha layer for TIFF images. Issue: IMAGING-216. Thanks to Gary Lucas. * Consolidate redundant methods in TIFF datareaders. Issue: IMAGING-269. Thanks to Gary Lucas. * Add list of TIFF files and example survey application. Issue: IMAGING-268. Thanks to Gary Lucas. -Fixed Bugs ----------- +Fixed Bugs +---------- * Add PNG predictor to reduce output size. Issue: IMAGING-330. Thanks to Gary Lucas. * Change getExif name to getOutputSet. Issue: IMAGING-327. Thanks to Gary Lucas. -* Prevent OutOfMemoryError in BmpImageParser. This can happen when the color palette length is +* Prevent OutOfMemoryError in BmpImageParser. This can happen when the color palette length is a large negative number. Issue: IMAGING-325. Thanks to Jin Wang. * Read TIFFs with 32-bit samples. Issue: IMAGING-320. Thanks to Gary Lucas. -* 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.) - +* 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. Issue: IMAGING-159. Thanks to Bruno P. Kinoshita, Gary Lucas, Matt Juntunen. * Encoding Support for IPTC metadata. Issue: IMAGING-168. Thanks to Yavuz Kavus. * Array sizes not checked for overflow in BmpImageParser. Issue: IMAGING-279. @@ -155,8 +155,8 @@ Fixed Bugs * A PNG image using indexed color type but no PLTE chunks throws NPE. Issue: IMAGING-317. Thanks to OSS-Fuzz. * Validate when accessing GIF color table array. Issue: IMAGING-318. Thanks to OSS-Fuzz. -Changes -------- +Changes +------- * Bump animal-sniffer-maven-plugin from 1.19 to 1.21 #120, #199. Thanks to Dependabot. * Bump maven-checkstyle-plugin from 3.1.1 to 3.1.2 #117. Thanks to Dependabot. @@ -185,350 +185,350 @@ Changes Have fun! -Apache Commons Imaging team - ------------------------------------------------------------------------------ - -The Apache Commons Imaging team is pleased to announce the commons-imaging-1.0-alpha2 release! - -Apache Commons Imaging (previously Sanselan) is a pure-Java image library. - -There are breaking changes between 1.0-alpha1 and 1.0-alpha2, until we stabilize the API for our 1.0 release. -Users are encouraged to read the release notes when updating to this new release. - -For details of the fixes and new features please see: - -https://www.apache.org/dist/commons/imaging/RELEASE-NOTES.txt - -[These are also included with the binary and source archives] - -The changes are also available at: -https://commons.apache.org/imaging/changes-report.html - -Binary and source archives are available from: - -https://commons.apache.org/proper/commons-imaging/download_imaging.cgi - -Please see the Apache Commons Imaging website for full details: - -https://commons.apache.org/imaging/ - -The Maven coordinates are: - - org.apache.commons - commons-imaging - 1.0-alpha2 - -New features ------------- - -* IMAGING-248: ICNS: missing element types; some safety checks Thanks to Greg Shrago. -* IMAGING-245: Add disposal method to GIF metadata Thanks to Christoffer Rydberg. -* IMAGING-146: Add documentation for the color package -* IMAGING-244: Use isEmpty instead of comparing size() with integers -* IMAGING-243: PNG Writer Indexed Color with semi-transparent Pixels and Better Compression Thanks to Andreas Menze. -* IMAGING-239: Add inflate (deflate algorithm) to TIFF files Thanks to Paul Austin. -* IMAGING-164: Simplify code in IcoImageParser::writeImage Thanks to Michael Groß. -* IMAGING-165: Add the fields from TiffReader.Collector to TiffContents Thanks to Michael Groß. -* IMAGING-228: Remove private method PhotometricInterpreterLogLuv#cube by Math.pow -* IMAGING-236: Add support to read multiple images from GIF Thanks to Christoffer Rydberg. - -Fixed Bugs ----------- - -* IMAGING-247: Fix crash when reading TIFF using PackBits Thanks to Gary Lucas. -* IMAGING-246: Invalid Block Size error prevents handling of block 1084, Macintosh NSPrintInfo -* IMAGING-163: Add XmpEmbedabble interface to parsers that support it -* IMAGING-151: ColorGroup.color_counts is mutable public List and is multiply sorted -* IMAGING-242: Upgrade to JUnit 5 -* IMAGING-241: Copy byte arrays fixing TODO markers -* IMAGING-136: Imaging.getImageInfo() fails to read JPEG file Thanks to Michael Groß. -* IMAGING-238: Return copied byte arrays in Png Chunk and Png Chunk ICCP -* IMAGING-230: Properly close resources with try-with-resources in T4AndT6Compression -* IMAGING-134: Invalid (RST) marker found in entropy data Thanks to Michael Sommerville. -* IMAGING-130: Reading of some GIF images throws java.io.IOException: AddStringToTable: codes: 4096 code_size: 12 Thanks to Michael Sommerville. -* IMAGING-224: Fix build errors in Travis -* IMAGING-167: Possible infinite loop at XpmImageParser::writeImage Thanks to Michael Groß. -* IMAGING-211: Imaging.getBufferedImage fails throwing java.lang.ArrayIndexOutOfBoundsException for specific inputs -* IMAGING-210: Imaging.getBufferedImage fails throwing NegativeArraySizeException for specific inputs - -Changes -------- - -* IMAGING-258: Prevent exception in TIFF when reading EXIF directory Thanks to Gary Lucas. -* IMAGING-260: Fix mvn site failure with JavaNCSS parse error -* IMAGING-259: Enhance TIFF DataReaders speed for compressed RGB Thanks to Gary Lucas. -* IMAGING-251: Support for TIFF floating-point formats Thanks to Gary Lucas. -* IMAGING-254: Small code improvements -* IMAGING-253: ByteSourceInputStream has initialized its length when reading starts Thanks to David Hrbacek. -* IMAGING-249: Make IPTCBlock members private and add getter/setter -* Update tests from commons-io:commons-io 2.6 to 2.7. Thanks to Gary Gregory. -* Update commons-parent from 50 to 51 #88. Thanks to Dependabot. -* Update actions/checkout from v1 to v2.3.1 #87. Thanks to Dependabot. -* Update junit-jupiter from 5.5.2 to 5.6.2 #86. Thanks to Dependabot. - - -Have fun! --Apache Commons Imaging team - ------------------------------------------------------------------------------ - -Apache Commons Imaging -Version 1.0-alpha1 -Release Notes - -INTRODUCTION ------------- - -Apache Commons Imaging is a pure-Java image library for reading and writing -a variety of image formats. - -For complete information on Commons Imaging, including sample code, -instructions on how to submit bug reports, patches, or suggestions for -improvement, see the Apache Commons Net website: - -http://commons.apache.org/imaging/ - -Please note that the project was previously known as Apache Sanselan, -and has been renamed to Apache Commons Imaging. As part of this rename: - - * the package changed to - org.apache.commons.imaging - from - org.apache.sanselan - - * the main class is now - org.apache.commons.imaging.Imaging - and not - org.apache.sanselan.Sanselan - - * the Maven coordinates are now: - org.apache.commons - commons-imaging - Commons Imaging - instead of the old: - org.apache.sanselan - sanselan - Apache Sanselan - - * the website is - http://commons.apache.org/imaging - and not - http://commons.apache.org/sanselan - - * etc. - -VERSION HISTORY ---------------- - -Release 1.0-alpha1 ------------------- - -First 1.0 alpha release. - -New features ------------- - -* IMAGING-75: Added accessor methods for a number of ImageInfo properties. -* IMAGING-71: Applied patch contributed by Nicolas Richeton, adding getEXIFThumbnailSize() and getEXIFThumbnailData() methods to JpegImageMetadata. Thanks to Nicolas Richeton. -* IMAGING-56: Add support for the ICNS icon format. Thanks to damjan. -* IMAGING-58: Add support for PCX, DCX, WBMP, XBM and XPM images. -* IMAGING-64: Add support for TIFF files with compression=2, (CCITT Group 3 1-Dimensional Modified Huffman run length encoding). -* IMAGING-77: Add a type-safe high-level API for writing TIFF fields. -* IMAGING-51: Add TagInfoXpText for fields like XPTITLE, and encode/decode it using UTF-16LE like Windows does. -* IMAGING-60: Added support for reading the RGBE / Radiance HDR image format. Thanks to proyal. -* IMAGING-68: Add a field to IptcRecord that contains its raw bytes, and a getter for this value. -* IMAGING-73: Provide a way to write EXIF data into files using Sanselan.writeImage(). -* IMAGING-47: Run a Findbugs analysis on "mvn site". Also audit and fix resource leaks. Thanks to adrian2k7. -* IMAGING-65: Provide a way to write the pixel density (DPI) into an image. -* IMAGING-61: Include a test utility for timing and memory in project example classes. Thanks to gwlucas. -* IMAGING-81: Add more Javadoc to main package. Thanks to gwlucas. -* IMAGING-89: Detect the YCCK color space/type in JPEG files' APP14 segment. -* IMAGING-94: Add ability to load partial TIFF images Thanks to gwlucas. - -Fixed Bugs ----------- - -* IMAGING-199: All tEXt chunks are not returned from PngImageParser.getMetadata Thanks to Ric Emery. -* IMAGING-220: JpegDecoder takes a long time (+10s) to decode a bad JPEG -* IMAGING-219: Imaging gets stuck parsing a RGBE input file -* IMAGING-215: ArrayIndexOutOfBoundsException in DhtSegment -* IMAGING-203: JPEG segment size not validated Thanks to Rody Kersten. -* IMAGING-209: PnmImageParser throws ImageWriteException when writing if PnmImageParser.PARAM_KEY_PNM_RAWBITS is provided Thanks to Isak Wertwein. -* IMAGING-205: Imaging (Apache Sanselan) produces "odd offsets" in (EXIF) metadata -* IMAGING-195: Incorrect Maven coordinates on project website Thanks to Keith Strydom. -* IMAGING-190: ImageDataReader.decompress() overwrites its input -* IMAGING-193: Duplicate class names -* IMAGING-189: parseXpmValuesSection uses && instead of || -* IMAGING-181: EXIF lens metadata tags missing in Commons Imaging but recognized in exiftool -* IMAGING-172: Microsoft tags are not seen in MS Windows Properties/Details dialog. -* IMAGING-176: TiffImageParser.getImageInfo() throws exception when "Compression" field is missing. Thanks to Gabriel Axel. -* IMAGING-178: PnmImageParser does not check the validity of input PAM header. Thanks to emopers. -* IMAGING-171: MicrosoftTagTest rewrite image exif fails in some environments Thanks to Jan Helbich. -* IMAGING-169: PnmImageParser throws NumberFormatException instead of ImageReadException when parsing invalid images Thanks to Nebu Pookins. -* IMAGING-144: TiffOutputSet.setGPSInDegrees should make sure, GPSVersionID is set Thanks to Paul Hartmann. -* IMAGING-117: Classes should not expose mutable arrays -* IMAGING-145: DumpImage method for JPEG reports it's coming from TIFF. Thanks to Chris Carman. -* IMAGING-137: Can not set EXIF_TAG_EXIF_VERSION tag. -* IMAGING-140: ExifReWriter always writes EXIF segment before JFIF segment. Thanks to Gavin Shiels. -* IMAGING-131: Allow null parameters in PngImageParser.getBufferedImage(), and add some tests for null parameters. -* IMAGING-121: Null Pointer exception while extracting metadata for CR2 image. Thanks to Piyush Kapoor. -* IMAGING-115: DhtSegment class contains mutable public arrays. -* IMAGING-117: SofnSegment.components - public mutable array. -* IMAGING-116: GenericSegment.bytes - public mutable array. -* IMAGING-118: interface RgbeConstants contains mutable array. -* IMAGING-114: ComSegment.comment is a public final byte array. -* IMAGING-109: Several files contain non-UTF8 characters. -* IMAGING-113: Cannot read multipage tiff. -* IMAGING-108: JPEG EOI marker could not be found at expected location. -* IMAGING-101: GIF dimensions transposed. Thanks to Colm O hEigeartaigh. -* IMAGING-23: JpegXMPWriter throws NullPointerException. -* IMAGING-74: 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. -* IMAGING-2: SanselanGuessFormatTest and SanselanTestConstants use Java 1.5 method String.replace(CharSequence, CharSequence). -* IMAGING-80: Sanselan tests fail on Windows. -* IMAGING-18: Fix for "JpegImageMetadata getEXIFThumbnail only works on Jpeg thumbnails stored as Tiff images" issue. - Jpeg thumbnails are read using ImageIO. Thanks to James E-J. -* IMAGING-48: JpegImageMetadata getEXIFThumbnail may raise a null pointer exception. -* IMAGING-52: Implement dumpImageFile for ICO files and fix a typo. Thanks to damjan. -* IMAGING-12: Tiff (exif) tags of type double written in wrong byte order. Thanks to gwlucas. -* IMAGING-30: The isTransparent flag is not set on transparent PNGs. Thanks to clement.escoffier. -* IMAGING-11: Ignore TIFF entries that have invalid offsets and/or lengths when we are not in strict mode. -* IMAGING-78: readDirectory method in TiffReader doesn't gracefully handle exceptions that can be thrown from ByteSource implementations. -* IMAGING-24: Search all tags instead of just EXIF tags when parsing TIFF metadata tags, and try to match on directory type as well. -* IMAGING-21: Don't allow very large TIFF lengths to be interpreted as negative because they have the highest order bit set. -* IMAGING-50: Make JPEG parsing highly resilient: skip all bytes after the end of a segment until the next segment (0xFF followed by non-0xFF). -* IMAGING-16: Fix reading ASCII tags in TIFF files. -* IMAGING-3: Ignore string differences in our tests when 7 bit unclean TIFF string are copied. -* IMAGING-41: Don't redefine BYTE_ORDER_BIG_ENDIAN and BYTE_ORDER_LITTLE_ENDIAN in UnicodeMetricsUTF16. -* IMAGING-35: Fixed issue "FieldTypeASCII does not conform to the EXIF specification," identified by Libor Nenadál. -* IMAGING-31: Fixed a bug in which gifs have incorrect size information in the the Logical Screen Descriptor. - This appears to be a bug in how Microsoft Office writes gifs. The Image Descriptor has the correct value. -* IMAGING-13: Added checks in ByteSource's getBlock() methods for invalid params. -* IMAGING-46: Fixed a possible NPE in Sanselan.getICCProfile pointed out by Jon Weygandt. -* IMAGING-76: Improve ICO file support. Thanks to damjan. -* IMAGING-49: Preserve the byte range occupied by the Maker Notes, so rewriting it doesn't corrupt it. -* IMAGING-29: Read in the full IPTC block before trying to ignore it, so we don't lose our position in the stream. Thanks to alexvigdor. -* IMAGING-45: Fix the GIF BitsPerPixel formula in GifImageParser's getImageInfo(). Thanks to pkapoor. -* IMAGING-39: Fix various problems with reading and writing EXIF tags. -* IMAGING-22: Eliminate or hide public mutable final arrays in the API. -* IMAGING-43: If the TIFF rows per strip is not present, assume it is the image length. Thanks to pkapoor. -* IMAGING-17: Make BitInputStream sensitive to byte order. Allows 48 BPP TIFF files to load. Thanks to pkapoor. -* IMAGING-38: Fix the PhysicalWidthDpi calculation for JPEG images. Thanks to tjoris. -* IMAGING-19: Fix reading DPI for TIFF files. Thanks to vvd. -* IMAGING-44: Fix reading DPI for PNG files. Thanks to vvd. -* IMAGING-40: Add the Software TIFF tag, and get the byte order after reading the first TIFF directory. Thanks to pkapoor. -* IMAGING-6: Correct the expected size of the decompressed TIFF image data, and improve sample depth scaling for PNG images. -* IMAGING-15: Stop JpegImageMetadata from throwing NPE if the exif field is null. Thanks to pkapoor. -* IMAGING-67: Speed up reading paletted TIFF files. Thanks to gwlucas. -* IMAGING-8: Allow TIFF fields to change size during encoding. Fix a broken test that assumes they never do. -* IMAGING-36: Fix sample usage links on the website. -* IMAGING-70: Reduce memory usage when reading TIFF files. Thanks to gwlucas. -* IMAGING-33: Fixed the differencing predictor for tiled TIFF images. -* IMAGING-5: Update website, fix some broken links and remove old code. -* IMAGING-69: Add a streamlined TIFF reader that reduces load time by a factor of 5. Thanks to gwlucas. -* IMAGING-82: Fix BMP width and height DPI. Thanks to pkapoor. -* IMAGING-86: Fix the lengths for DateTimeOriginal and DateTimeDigitized TIFF/EXIF tags. -* IMAGING-88: Method lowerBound in org.apache.commons.imaging.common.itu_t4.T4AndT6Compression has a division error. Thanks to craigkelly. -* IMAGING-92: Issue trying to update GPS metadata info in a JPG. Thanks to hmarmy. -* IMAGING-93: Tiled TIFF images do not correctly load partial tiles. Thanks to gwlucas. -* IMAGING-90: Allow non-1 TIFF field lengths when parsing offset fields in non-strict mode. -* IMAGING-99: java.io.IOException: Could not read block Thanks to st.h. - -Changes -------- - -* IMAGING-154: Remove Debug class -* IMAGING-124: Tidy up IconParser Thanks to Jens Kapitza. -* IMAGING-123: remove duplicated lines in T4AndT6Compression Thanks to Jens Kapitza. -* IMAGING-186: Add sCAL support to PNG reading and writing. Thanks to Ric Emery. -* IMAGING-184: Update platform from Java 5 to 7 -* IMAGING-112: JpegIptcRewriter.removeIPTC() does not remove all metadata Thanks to Xavier Dury. -* IMAGING-166: ByteSourceImageTest: Local variable hides a field Thanks to Michael Groß. -* IMAGING-156: Refactor TagConstants -* IMAGING-126: TIFF and PNG images should not be bigger than the ones created by java ImageIO Thanks to Gary Lucas. -* IMAGING-147: Add color constants Thanks to Stephan Koeninger. -* IMAGING-150: Implement equals and hashcode on color classes Thanks to Stephan Koeninger. -* IMAGING-91: ByteSourceInputStream.streamLength could be a long. -* IMAGING-95: Some tiff processing takes very long. Thanks to amitgupt. -* IMAGING-223: Update from Java 7 to Java 8. Thanks to Gary Gregory. - -Minimum Java version: 1.5 -Compatibility with 0.97: - Binary compatible: No. - Source compatible: No. - Semantic compatible: No. - - -Release 0.97 ------------- - - * Rewrote the info.txt files for many images in the sample image library to clarify contribution to project. - * Removed the images from the www.wpclipart.com Public Domain library. - * Improved the examples illustrating how to change EXIF metadata. - * Applied a patch from Niall Pemberton around jdk1.5 compatibility: - """ - Sanselan claims JDK 1.4 compatibility, but a JDK 1.5 method (Class's getSimpleName() [1]) has been used in JpegRewriter - """ - * Applied a "Build Improvements" patch from Niall Pemberton: - """ - I took a look at the propsed 0.96 relelase and have some suggestions to improve the build: - * Add standard manifest entries to jar - * Lock down version numbers for maven compiler, surefire and javadoc plugins - * generate sources jar for the release - * include the RELEASE-NOTES in the binary distribution - * include NOTICE/LICENSE files in the javadoc jar - """ - -Release 0.96 ------------- - - * Updated KEYS file. - * Added more unit tests around BMP. - * Added more images to the test image suite. - * Fixed a bug where errors were being wrongly logged to System.out. - * Moved the example code into the test source directory, to comply with Maven's standard project layout. - * Added a couple of images to the sample image library that demonstrate a couple variations on Photoshop/IPTC data. - * Fixed a small bug in the IPTC constants introduced while cleaning up the constants. - * Started shift towards moving field-level parsing into BinaryInputStream and BinaryOutputStream. - * Fixed a png unit test that used a piece of Java 1.6 syntax. - * Added unit tests around the new IPTC functionality. - * Added IPTC remove/update/insert functionality. - * Rewrote the IPTC parsing support. - * Added improved support for reading and writing iTXt, tEXt, zTXt Png chunks. - Added a unit test that demonstrates the feature. - * Found a new regression wherein DeflaterOutputStream needs to be closed. - * Added the .tar.bz2 distributions back into the maven assembly descriptors. - * Moved the example/sample code to a new top-level source folder, "example." - * Replaced dependency on java.util.zip.DeflaterOutputStream, which is only available in Java 1.6. - * Added a unit test around reading and writing images in every format. - * We now sort some (but not all) GIF color tables. - * Applied the BMP "buffer flushing" bug to the PBM reading and writing code. - * Fixed a regression around flushing the bit buffer when writing BMPs with very small palettes. - * Removed assumption about DataBuffer type when reading BMPs. - * When writing a GIF, we now always include a Graphic Control Extension block, even if its not necessary. - * We are more defensive about missing GCEs. - * Lastly, we now set a minimum bound on initial code sizes for LZW-compressed Gif image data. - * Found a regression in writing TIFFs around strip offsets being properly updated. Not a LZW issue after all. - Added a few unit tests around this issue. - see: https://issues.apache.org/jira/browse/SANSELAN-6 - * Added ability to remove and update XMP XML in existing JPEG files. - * Added ability to embed XMP XML when writing the following formats: GIF, PNG, TIFF. - * Improved handling of tEXt and zTXt PNG text blocks. - * Added XMP XML extraction for the following formats: GIF (untested), JPEG, TIFF, PNG, PSD. - * Added RELEASE_NOTES file (this file). - * Added Apache license header to bin.xml and src.xml Maven assembly descriptors. - * Added Javadocs to the binary distribution - - -Release 0.94 ------------- - -First Apache release of Sanselan. - -Fixed bugs: ------------ - * Can't convert PNG image to GIF image - The PNG reader wasn't handling the 16-bit mode 4 PNGs properly. - The PNG reader wasn't gamma-correcting non-palette values properly in PNGs. - see: https://issues.apache.org/jira/browse/SANSELAN-5 + +----------------------------------------------------------------------------- + +The Apache Commons Imaging team is pleased to announce the commons-imaging-1.0-alpha2 release! + +Apache Commons Imaging (previously Sanselan) is a pure-Java image library. + +There are breaking changes between 1.0-alpha1 and 1.0-alpha2, until we stabilize the API for our 1.0 release. +Users are encouraged to read the release notes when updating to this new release. + +For details of the fixes and new features please see: + +https://www.apache.org/dist/commons/imaging/RELEASE-NOTES.txt + +[These are also included with the binary and source archives] + +The changes are also available at: +https://commons.apache.org/imaging/changes-report.html + +Binary and source archives are available from: + +https://commons.apache.org/proper/commons-imaging/download_imaging.cgi + +Please see the Apache Commons Imaging website for full details: + +https://commons.apache.org/imaging/ + +The Maven coordinates are: + + org.apache.commons + commons-imaging + 1.0-alpha2 + +New features +------------ + +* IMAGING-248: ICNS: missing element types; some safety checks Thanks to Greg Shrago. +* IMAGING-245: Add disposal method to GIF metadata Thanks to Christoffer Rydberg. +* IMAGING-146: Add documentation for the color package +* IMAGING-244: Use isEmpty instead of comparing size() with integers +* IMAGING-243: PNG Writer Indexed Color with semi-transparent Pixels and Better Compression Thanks to Andreas Menze. +* IMAGING-239: Add inflate (deflate algorithm) to TIFF files Thanks to Paul Austin. +* IMAGING-164: Simplify code in IcoImageParser::writeImage Thanks to Michael Groß. +* IMAGING-165: Add the fields from TiffReader.Collector to TiffContents Thanks to Michael Groß. +* IMAGING-228: Remove private method PhotometricInterpreterLogLuv#cube by Math.pow +* IMAGING-236: Add support to read multiple images from GIF Thanks to Christoffer Rydberg. + +Fixed Bugs +---------- + +* IMAGING-247: Fix crash when reading TIFF using PackBits Thanks to Gary Lucas. +* IMAGING-246: Invalid Block Size error prevents handling of block 1084, Macintosh NSPrintInfo +* IMAGING-163: Add XmpEmbedabble interface to parsers that support it +* IMAGING-151: ColorGroup.color_counts is mutable public List and is multiply sorted +* IMAGING-242: Upgrade to JUnit 5 +* IMAGING-241: Copy byte arrays fixing TODO markers +* IMAGING-136: Imaging.getImageInfo() fails to read JPEG file Thanks to Michael Groß. +* IMAGING-238: Return copied byte arrays in Png Chunk and Png Chunk ICCP +* IMAGING-230: Properly close resources with try-with-resources in T4AndT6Compression +* IMAGING-134: Invalid (RST) marker found in entropy data Thanks to Michael Sommerville. +* IMAGING-130: Reading of some GIF images throws java.io.IOException: AddStringToTable: codes: 4096 code_size: 12 Thanks to Michael Sommerville. +* IMAGING-224: Fix build errors in Travis +* IMAGING-167: Possible infinite loop at XpmImageParser::writeImage Thanks to Michael Groß. +* IMAGING-211: Imaging.getBufferedImage fails throwing java.lang.ArrayIndexOutOfBoundsException for specific inputs +* IMAGING-210: Imaging.getBufferedImage fails throwing NegativeArraySizeException for specific inputs + +Changes +------- + +* IMAGING-258: Prevent exception in TIFF when reading EXIF directory Thanks to Gary Lucas. +* IMAGING-260: Fix mvn site failure with JavaNCSS parse error +* IMAGING-259: Enhance TIFF DataReaders speed for compressed RGB Thanks to Gary Lucas. +* IMAGING-251: Support for TIFF floating-point formats Thanks to Gary Lucas. +* IMAGING-254: Small code improvements +* IMAGING-253: ByteSourceInputStream has initialized its length when reading starts Thanks to David Hrbacek. +* IMAGING-249: Make IPTCBlock members private and add getter/setter +* Update tests from commons-io:commons-io 2.6 to 2.7. Thanks to Gary Gregory. +* Update commons-parent from 50 to 51 #88. Thanks to Dependabot. +* Update actions/checkout from v1 to v2.3.1 #87. Thanks to Dependabot. +* Update junit-jupiter from 5.5.2 to 5.6.2 #86. Thanks to Dependabot. + + +Have fun! +-Apache Commons Imaging team + +----------------------------------------------------------------------------- + +Apache Commons Imaging +Version 1.0-alpha1 +Release Notes + +INTRODUCTION +------------ + +Apache Commons Imaging is a pure-Java image library for reading and writing +a variety of image formats. + +For complete information on Commons Imaging, including sample code, +instructions on how to submit bug reports, patches, or suggestions for +improvement, see the Apache Commons Net website: + +http://commons.apache.org/imaging/ + +Please note that the project was previously known as Apache Sanselan, +and has been renamed to Apache Commons Imaging. As part of this rename: + + * the package changed to + org.apache.commons.imaging + from + org.apache.sanselan + + * the main class is now + org.apache.commons.imaging.Imaging + and not + org.apache.sanselan.Sanselan + + * the Maven coordinates are now: + org.apache.commons + commons-imaging + Commons Imaging + instead of the old: + org.apache.sanselan + sanselan + Apache Sanselan + + * the website is + http://commons.apache.org/imaging + and not + http://commons.apache.org/sanselan + + * etc. + +VERSION HISTORY +--------------- + +Release 1.0-alpha1 +------------------ + +First 1.0 alpha release. + +New features +------------ + +* IMAGING-75: Added accessor methods for a number of ImageInfo properties. +* IMAGING-71: Applied patch contributed by Nicolas Richeton, adding getEXIFThumbnailSize() and getEXIFThumbnailData() methods to JpegImageMetadata. Thanks to Nicolas Richeton. +* IMAGING-56: Add support for the ICNS icon format. Thanks to damjan. +* IMAGING-58: Add support for PCX, DCX, WBMP, XBM and XPM images. +* IMAGING-64: Add support for TIFF files with compression=2, (CCITT Group 3 1-Dimensional Modified Huffman run length encoding). +* IMAGING-77: Add a type-safe high-level API for writing TIFF fields. +* IMAGING-51: Add TagInfoXpText for fields like XPTITLE, and encode/decode it using UTF-16LE like Windows does. +* IMAGING-60: Added support for reading the RGBE / Radiance HDR image format. Thanks to proyal. +* IMAGING-68: Add a field to IptcRecord that contains its raw bytes, and a getter for this value. +* IMAGING-73: Provide a way to write EXIF data into files using Sanselan.writeImage(). +* IMAGING-47: Run a Findbugs analysis on "mvn site". Also audit and fix resource leaks. Thanks to adrian2k7. +* IMAGING-65: Provide a way to write the pixel density (DPI) into an image. +* IMAGING-61: Include a test utility for timing and memory in project example classes. Thanks to gwlucas. +* IMAGING-81: Add more Javadoc to main package. Thanks to gwlucas. +* IMAGING-89: Detect the YCCK color space/type in JPEG files' APP14 segment. +* IMAGING-94: Add ability to load partial TIFF images Thanks to gwlucas. + +Fixed Bugs +---------- + +* IMAGING-199: All tEXt chunks are not returned from PngImageParser.getMetadata Thanks to Ric Emery. +* IMAGING-220: JpegDecoder takes a long time (+10s) to decode a bad JPEG +* IMAGING-219: Imaging gets stuck parsing a RGBE input file +* IMAGING-215: ArrayIndexOutOfBoundsException in DhtSegment +* IMAGING-203: JPEG segment size not validated Thanks to Rody Kersten. +* IMAGING-209: PnmImageParser throws ImageWriteException when writing if PnmImageParser.PARAM_KEY_PNM_RAWBITS is provided Thanks to Isak Wertwein. +* IMAGING-205: Imaging (Apache Sanselan) produces "odd offsets" in (EXIF) metadata +* IMAGING-195: Incorrect Maven coordinates on project website Thanks to Keith Strydom. +* IMAGING-190: ImageDataReader.decompress() overwrites its input +* IMAGING-193: Duplicate class names +* IMAGING-189: parseXpmValuesSection uses && instead of || +* IMAGING-181: EXIF lens metadata tags missing in Commons Imaging but recognized in exiftool +* IMAGING-172: Microsoft tags are not seen in MS Windows Properties/Details dialog. +* IMAGING-176: TiffImageParser.getImageInfo() throws exception when "Compression" field is missing. Thanks to Gabriel Axel. +* IMAGING-178: PnmImageParser does not check the validity of input PAM header. Thanks to emopers. +* IMAGING-171: MicrosoftTagTest rewrite image exif fails in some environments Thanks to Jan Helbich. +* IMAGING-169: PnmImageParser throws NumberFormatException instead of ImageReadException when parsing invalid images Thanks to Nebu Pookins. +* IMAGING-144: TiffOutputSet.setGPSInDegrees should make sure, GPSVersionID is set Thanks to Paul Hartmann. +* IMAGING-117: Classes should not expose mutable arrays +* IMAGING-145: DumpImage method for JPEG reports it's coming from TIFF. Thanks to Chris Carman. +* IMAGING-137: Can not set EXIF_TAG_EXIF_VERSION tag. +* IMAGING-140: ExifReWriter always writes EXIF segment before JFIF segment. Thanks to Gavin Shiels. +* IMAGING-131: Allow null parameters in PngImageParser.getBufferedImage(), and add some tests for null parameters. +* IMAGING-121: Null Pointer exception while extracting metadata for CR2 image. Thanks to Piyush Kapoor. +* IMAGING-115: DhtSegment class contains mutable public arrays. +* IMAGING-117: SofnSegment.components - public mutable array. +* IMAGING-116: GenericSegment.bytes - public mutable array. +* IMAGING-118: interface RgbeConstants contains mutable array. +* IMAGING-114: ComSegment.comment is a public final byte array. +* IMAGING-109: Several files contain non-UTF8 characters. +* IMAGING-113: Cannot read multipage tiff. +* IMAGING-108: JPEG EOI marker could not be found at expected location. +* IMAGING-101: GIF dimensions transposed. Thanks to Colm O hEigeartaigh. +* IMAGING-23: JpegXMPWriter throws NullPointerException. +* IMAGING-74: 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. +* IMAGING-2: SanselanGuessFormatTest and SanselanTestConstants use Java 1.5 method String.replace(CharSequence, CharSequence). +* IMAGING-80: Sanselan tests fail on Windows. +* IMAGING-18: Fix for "JpegImageMetadata getEXIFThumbnail only works on Jpeg thumbnails stored as Tiff images" issue. + Jpeg thumbnails are read using ImageIO. Thanks to James E-J. +* IMAGING-48: JpegImageMetadata getEXIFThumbnail may raise a null pointer exception. +* IMAGING-52: Implement dumpImageFile for ICO files and fix a typo. Thanks to damjan. +* IMAGING-12: Tiff (exif) tags of type double written in wrong byte order. Thanks to gwlucas. +* IMAGING-30: The isTransparent flag is not set on transparent PNGs. Thanks to clement.escoffier. +* IMAGING-11: Ignore TIFF entries that have invalid offsets and/or lengths when we are not in strict mode. +* IMAGING-78: readDirectory method in TiffReader doesn't gracefully handle exceptions that can be thrown from ByteSource implementations. +* IMAGING-24: Search all tags instead of just EXIF tags when parsing TIFF metadata tags, and try to match on directory type as well. +* IMAGING-21: Don't allow very large TIFF lengths to be interpreted as negative because they have the highest order bit set. +* IMAGING-50: Make JPEG parsing highly resilient: skip all bytes after the end of a segment until the next segment (0xFF followed by non-0xFF). +* IMAGING-16: Fix reading ASCII tags in TIFF files. +* IMAGING-3: Ignore string differences in our tests when 7 bit unclean TIFF string are copied. +* IMAGING-41: Don't redefine BYTE_ORDER_BIG_ENDIAN and BYTE_ORDER_LITTLE_ENDIAN in UnicodeMetricsUTF16. +* IMAGING-35: Fixed issue "FieldTypeASCII does not conform to the EXIF specification," identified by Libor Nenadál. +* IMAGING-31: Fixed a bug in which gifs have incorrect size information in the the Logical Screen Descriptor. + This appears to be a bug in how Microsoft Office writes gifs. The Image Descriptor has the correct value. +* IMAGING-13: Added checks in ByteSource's getBlock() methods for invalid params. +* IMAGING-46: Fixed a possible NPE in Sanselan.getICCProfile pointed out by Jon Weygandt. +* IMAGING-76: Improve ICO file support. Thanks to damjan. +* IMAGING-49: Preserve the byte range occupied by the Maker Notes, so rewriting it doesn't corrupt it. +* IMAGING-29: Read in the full IPTC block before trying to ignore it, so we don't lose our position in the stream. Thanks to alexvigdor. +* IMAGING-45: Fix the GIF BitsPerPixel formula in GifImageParser's getImageInfo(). Thanks to pkapoor. +* IMAGING-39: Fix various problems with reading and writing EXIF tags. +* IMAGING-22: Eliminate or hide public mutable final arrays in the API. +* IMAGING-43: If the TIFF rows per strip is not present, assume it is the image length. Thanks to pkapoor. +* IMAGING-17: Make BitInputStream sensitive to byte order. Allows 48 BPP TIFF files to load. Thanks to pkapoor. +* IMAGING-38: Fix the PhysicalWidthDpi calculation for JPEG images. Thanks to tjoris. +* IMAGING-19: Fix reading DPI for TIFF files. Thanks to vvd. +* IMAGING-44: Fix reading DPI for PNG files. Thanks to vvd. +* IMAGING-40: Add the Software TIFF tag, and get the byte order after reading the first TIFF directory. Thanks to pkapoor. +* IMAGING-6: Correct the expected size of the decompressed TIFF image data, and improve sample depth scaling for PNG images. +* IMAGING-15: Stop JpegImageMetadata from throwing NPE if the exif field is null. Thanks to pkapoor. +* IMAGING-67: Speed up reading paletted TIFF files. Thanks to gwlucas. +* IMAGING-8: Allow TIFF fields to change size during encoding. Fix a broken test that assumes they never do. +* IMAGING-36: Fix sample usage links on the website. +* IMAGING-70: Reduce memory usage when reading TIFF files. Thanks to gwlucas. +* IMAGING-33: Fixed the differencing predictor for tiled TIFF images. +* IMAGING-5: Update website, fix some broken links and remove old code. +* IMAGING-69: Add a streamlined TIFF reader that reduces load time by a factor of 5. Thanks to gwlucas. +* IMAGING-82: Fix BMP width and height DPI. Thanks to pkapoor. +* IMAGING-86: Fix the lengths for DateTimeOriginal and DateTimeDigitized TIFF/EXIF tags. +* IMAGING-88: Method lowerBound in org.apache.commons.imaging.common.itu_t4.T4AndT6Compression has a division error. Thanks to craigkelly. +* IMAGING-92: Issue trying to update GPS metadata info in a JPG. Thanks to hmarmy. +* IMAGING-93: Tiled TIFF images do not correctly load partial tiles. Thanks to gwlucas. +* IMAGING-90: Allow non-1 TIFF field lengths when parsing offset fields in non-strict mode. +* IMAGING-99: java.io.IOException: Could not read block Thanks to st.h. + +Changes +------- + +* IMAGING-154: Remove Debug class +* IMAGING-124: Tidy up IconParser Thanks to Jens Kapitza. +* IMAGING-123: remove duplicated lines in T4AndT6Compression Thanks to Jens Kapitza. +* IMAGING-186: Add sCAL support to PNG reading and writing. Thanks to Ric Emery. +* IMAGING-184: Update platform from Java 5 to 7 +* IMAGING-112: JpegIptcRewriter.removeIPTC() does not remove all metadata Thanks to Xavier Dury. +* IMAGING-166: ByteSourceImageTest: Local variable hides a field Thanks to Michael Groß. +* IMAGING-156: Refactor TagConstants +* IMAGING-126: TIFF and PNG images should not be bigger than the ones created by java ImageIO Thanks to Gary Lucas. +* IMAGING-147: Add color constants Thanks to Stephan Koeninger. +* IMAGING-150: Implement equals and hashcode on color classes Thanks to Stephan Koeninger. +* IMAGING-91: ByteSourceInputStream.streamLength could be a long. +* IMAGING-95: Some tiff processing takes very long. Thanks to amitgupt. +* IMAGING-223: Update from Java 7 to Java 8. Thanks to Gary Gregory. + +Minimum Java version: 1.5 +Compatibility with 0.97: + Binary compatible: No. + Source compatible: No. + Semantic compatible: No. + + +Release 0.97 +------------ + + * Rewrote the info.txt files for many images in the sample image library to clarify contribution to project. + * Removed the images from the www.wpclipart.com Public Domain library. + * Improved the examples illustrating how to change EXIF metadata. + * Applied a patch from Niall Pemberton around jdk1.5 compatibility: + """ + Sanselan claims JDK 1.4 compatibility, but a JDK 1.5 method (Class's getSimpleName() [1]) has been used in JpegRewriter + """ + * Applied a "Build Improvements" patch from Niall Pemberton: + """ + I took a look at the propsed 0.96 relelase and have some suggestions to improve the build: + * Add standard manifest entries to jar + * Lock down version numbers for maven compiler, surefire and javadoc plugins + * generate sources jar for the release + * include the RELEASE-NOTES in the binary distribution + * include NOTICE/LICENSE files in the javadoc jar + """ + +Release 0.96 +------------ + + * Updated KEYS file. + * Added more unit tests around BMP. + * Added more images to the test image suite. + * Fixed a bug where errors were being wrongly logged to System.out. + * Moved the example code into the test source directory, to comply with Maven's standard project layout. + * Added a couple of images to the sample image library that demonstrate a couple variations on Photoshop/IPTC data. + * Fixed a small bug in the IPTC constants introduced while cleaning up the constants. + * Started shift towards moving field-level parsing into BinaryInputStream and BinaryOutputStream. + * Fixed a png unit test that used a piece of Java 1.6 syntax. + * Added unit tests around the new IPTC functionality. + * Added IPTC remove/update/insert functionality. + * Rewrote the IPTC parsing support. + * Added improved support for reading and writing iTXt, tEXt, zTXt Png chunks. + Added a unit test that demonstrates the feature. + * Found a new regression wherein DeflaterOutputStream needs to be closed. + * Added the .tar.bz2 distributions back into the maven assembly descriptors. + * Moved the example/sample code to a new top-level source folder, "example." + * Replaced dependency on java.util.zip.DeflaterOutputStream, which is only available in Java 1.6. + * Added a unit test around reading and writing images in every format. + * We now sort some (but not all) GIF color tables. + * Applied the BMP "buffer flushing" bug to the PBM reading and writing code. + * Fixed a regression around flushing the bit buffer when writing BMPs with very small palettes. + * Removed assumption about DataBuffer type when reading BMPs. + * When writing a GIF, we now always include a Graphic Control Extension block, even if its not necessary. + * We are more defensive about missing GCEs. + * Lastly, we now set a minimum bound on initial code sizes for LZW-compressed Gif image data. + * Found a regression in writing TIFFs around strip offsets being properly updated. Not a LZW issue after all. + Added a few unit tests around this issue. + see: https://issues.apache.org/jira/browse/SANSELAN-6 + * Added ability to remove and update XMP XML in existing JPEG files. + * Added ability to embed XMP XML when writing the following formats: GIF, PNG, TIFF. + * Improved handling of tEXt and zTXt PNG text blocks. + * Added XMP XML extraction for the following formats: GIF (untested), JPEG, TIFF, PNG, PSD. + * Added RELEASE_NOTES file (this file). + * Added Apache license header to bin.xml and src.xml Maven assembly descriptors. + * Added Javadocs to the binary distribution + + +Release 0.94 +------------ + +First Apache release of Sanselan. + +Fixed bugs: +----------- + * Can't convert PNG image to GIF image + The PNG reader wasn't handling the 16-bit mode 4 PNGs properly. + The PNG reader wasn't gamma-correcting non-palette values properly in PNGs. + see: https://issues.apache.org/jira/browse/SANSELAN-5