| |
| Apache Commons Imaging |
| Version 1.0-SNAPSHOT |
| 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: |
| <groupId>org.apache.commons</groupId> |
| <artifactId>commons-imaging</artifactId> |
| <name>Commons Imaging</name> |
| instead of the old: |
| <groupId>org.apache.sanselan</groupId> |
| <artifactId>sanselan</artifactId> |
| <name>Apache Sanselan</name> |
| |
| * the website is |
| http://commons.apache.org/imaging |
| and not |
| http://commons.apache.org/sanselan |
| |
| * etc. |
| |
| VERSION HISTORY |
| |
| Release 1.0-SNAPSHOT |
| ------------ |
| TBA |
| |
| Changes in this version include: |
| |
| New features: |
| o IMAGING-75: Added accessor methods for a number of ImageInfo properties. |
| o IMAGING-71: Applied patch contributed by Nicolas Richeton, adding getEXIFThumbnailSize() and getEXIFThumbnailData() methods to JpegImageMetadata. Thanks to Nicolas Richeton. |
| o IMAGING-56: Add support for the ICNS icon format. Thanks to damjan. |
| o IMAGING-58: Add support for PCX, DCX, WBMP, XBM and XPM images. |
| o IMAGING-64: Add support for TIFF files with compression=2, (CCITT Group 3 1-Dimensional Modified Huffman run length encoding). |
| o IMAGING-77: Add a type-safe high-level API for writing TIFF fields. |
| o IMAGING-51: Add TagInfoXpText for fields like XPTITLE, and encode/decode it using UTF-16LE like Windows does. |
| o IMAGING-60: Added support for reading the RGBE / Radiance HDR image format. Thanks to proyal. |
| o IMAGING-68: Add a field to IptcRecord that contains its raw bytes, and a getter for this value. |
| o IMAGING-73: Provide a way to write EXIF data into files using Sanselan.writeImage(). |
| o IMAGING-47: Run a Findbugs analysis on "mvn site". Also audit and fix resource leaks. Thanks to adrian2k7. |
| o IMAGING-65: Provide a way to write the pixel density (DPI) into an image. |
| o IMAGING-61: Include a test utility for timing and memory in project example classes. Thanks to gwlucas. |
| o IMAGING-81: Add more Javadoc to main package. Thanks to gwlucas. |
| o IMAGING-89: Detect the YCCK color space/type in JPEG files' APP14 segment. |
| |
| Fixed Bugs: |
| o IMAGING-23: JpegXMPWriter throws NullPointerException. |
| o 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. |
| o IMAGING-2: SanselanGuessFormatTest and SanselanTestConstants use Java 1.5 method String.replace(CharSequence, CharSequence). |
| o IMAGING-80: Sanselan tests fail on Windows. |
| o 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. |
| o IMAGING-48: JpegImageMetadata getEXIFThumbnail may raise a null pointer exception. |
| o IMAGING-52: Implement dumpImageFile for ICO files and fix a typo. Thanks to damjan. |
| o IMAGING-12: Tiff (exif) tags of type double written in wrong byte order. Thanks to gwlucas. |
| o IMAGING-30: The isTransparent flag is not set on transparent PNGs. Thanks to clement.escoffier. |
| o IMAGING-11: Ignore TIFF entries that have invalid offsets and/or lengths when we are not in strict mode. |
| o IMAGING-78: readDirectory method in TiffReader doesn't gracefully handle exceptions that can be thrown from ByteSource implementations. |
| o IMAGING-24: Search all tags instead of just EXIF tags when parsing TIFF metadata tags, and try to match on directory type as well. |
| o IMAGING-21: Don't allow very large TIFF lengths to be interpreted as negative because they have the highest order bit set. |
| o 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). |
| o IMAGING-16: Fix reading ASCII tags in TIFF files. |
| o IMAGING-3: Ignore string differences in our tests when 7 bit unclean TIFF string are copied. |
| o IMAGING-41: Don't redefine BYTE_ORDER_BIG_ENDIAN and BYTE_ORDER_LITTLE_ENDIAN in UnicodeMetricsUTF16. |
| o IMAGING-35: Fixed issue "FieldTypeASCII does not conform to the EXIF specification," identified by Libor Nenadál. |
| o 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. |
| o IMAGING-13: Added checks in ByteSource's getBlock() methods for invalid params. |
| o IMAGING-46: Fixed a possible NPE in Sanselan.getICCProfile pointed out by Jon Weygandt. |
| o IMAGING-76: Improve ICO file support. Thanks to damjan. |
| o IMAGING-49: Preserve the byte range occupied by the Maker Notes, so rewriting it doesn't corrupt it. |
| o 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. |
| o IMAGING-45: Fix the GIF BitsPerPixel formula in GifImageParser's getImageInfo(). Thanks to pkapoor. |
| o IMAGING-39: Fix various problems with reading and writing EXIF tags. |
| o IMAGING-22: Eliminate or hide public mutable final arrays in the API. |
| o IMAGING-43: If the TIFF rows per strip is not present, assume it is the image length. Thanks to pkapoor. |
| o IMAGING-17: Make BitInputStream sensitive to byte order. Allows 48 BPP TIFF files to load. Thanks to pkapoor. |
| o IMAGING-38: Fix the PhysicalWidthDpi calculation for JPEG images. Thanks to tjoris. |
| o IMAGING-19: Fix reading DPI for TIFF files. Thanks to vvd. |
| o IMAGING-44: Fix reading DPI for PNG files. Thanks to vvd. |
| o IMAGING-40: Add the Software TIFF tag, and get the byte order after reading the first TIFF directory. Thanks to pkapoor. |
| o IMAGING-6: Correct the expected size of the decompressed TIFF image data, and improve sample depth scaling for PNG images. |
| o IMAGING-15: Stop JpegImageMetadata from throwing NPE if the exif field is null. Thanks to pkapoor. |
| o IMAGING-67: Speed up reading paletted TIFF files. Thanks to gwlucas. |
| o IMAGING-8: Allow TIFF fields to change size during encoding. Fix a broken test that assumes they never do. |
| o IMAGING-36: Fix sample usage links on the website. |
| o IMAGING-70: Reduce memory usage when reading TIFF files. Thanks to gwlucas. |
| o IMAGING-33: Fixed the differencing predictor for tiled TIFF images. |
| o IMAGING-5: Update website, fix some broken links and remove old code. |
| o IMAGING-69: Add a streamlined TIFF reader that reduces load time by a factor of 5. Thanks to gwlucas. |
| o IMAGING-82: Fix BMP width and height DPI. Thanks to pkapoor. |
| o IMAGING-86: Fix the lengths for DateTimeOriginal and DateTimeDigitized TIFF/EXIF tags. |
| o IMAGING-88: Method lowerBound in org.apache.commons.imaging.common.itu_t4.T4AndT6Compression has a division error. Thanks to craigkelly. |
| |
| |
| 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 |
| |