This release contains fixes across the entire project uncovered during the creation of the official .NET port of this project. This new implementation was originally ported from Java to C# by Yakov Danilov (for Imazen LLC). Since then it's been heavily refactored. Going forward, it will be kept functionally equivalent to the Java implementation.
Full diff: 2.8.1...2.9.0
New features
- Support for RAF files df06808 e44bbea b04b20d #73 #109
- Add support for JFXX (JFIF extension) segments da56f27
- Add support for "Ducky" segments, from Photoshop's "Save for Web" feature 1416d63 #115
- Read JFIF thumb width/height tags 2aec48a
- Process XMP found in Exif tag 0x02BC 6619b7c #157
- Process sub-IFD found via Exif tag 6fab2ec
- Support non-standard TIFF format code 13 that points to new IFDs 38efe09 73eeefb
- Support arrays of IFD pointers within a tag, not just a single pointer d5a254c
- Process additional XMP tags 75799bb #159
- Support additional WebP chunk types 4f3d75e 747127e
Fixes
- Considerable overhaul of date, time and time zone handling across the library #153 #154 #155 #158
- Attempt to recover from incorrect JPEG segment length by scanning for next marker 4bac919 #121 #129
- Incorrect PNG chromaticity 7d0d44e
- Potential bound exception in
PhotoshopDirectory2a72692 05f67c3 - Potential bound exception in
NikonType2MakernoteDescriptorefa1c4a - Incorrect return value from
AdobeJpegDescriptor.getDctEncodeVersionDescription4959b51 - Typos in
PcxDirectorytag names 40d6484 - Validate Olympus makernote dates 80afe26 a5fdcdf
- Validate ICC dates so exception won't halt reading 8bfc2e9 185ab46
- Validate IPTC dates during parsing cee3443
- Parse IPTC
IptcDirectory.TAG_DIGITAL_DATE_CREATED168a208 - Non-
8BIMPhotoshop IRBs don't stop processing ef59b50 #125 #128 TiffReaderattempts to recover from invalid byte ordering b336b3a #136- Correctly handle alternative Olympus makernote preamble 5793c81 73f1a48 #93
- Clear out fractional seconds from computed dates (PNG and ICC) 2ea2549 #146
- Fix swapped
JpegComponentmethodsgetHorizontalSamplingFactor()andgetVerticalSamplingFactor()6c31782 #156 - Make
GpsDirectory.getGpsDate()locale independent 29e95df #160 #161 - Make
PngMetadataReaderTestlocale independent e0eb4b2 #162 #163
Description formats
- Standardisation of f-stop descriptions 45f1e10 0b5d3f9 f796031
- Change formatting of focal length descriptions 120cd80
- Use offset in date descriptions, not timezone name 8e4ffb2
- ICC value formats e6ab7b4 40d60fb
- Fix typo in 'fluorescent' in
ExifDescriptorBase21a5391 - Remove trailing space in
PhotoshopDescriptoroutput 674c609 - Remove trailing full stop in
ExifDescriptorBaseoutput d7a0cf3 - Number formatting in Olympus makernote descriptions fb1997e
- Don't show lens f-stop range when upper and lower values are identical b74aca1
- Update shutter speed value formatting e879944
- Describe
ExifDescriptorBase.TAG_LENS_SPECIFICATIONbe55336 - Capitalise the name of
XmpDirectory4777af1
API changes
- Deprecate
ExifThumbnailDirectory.TAG_THUMBNAIL_COMPRESSION825c439 12f023a 4e084ca - Remove unused class
DefaultTagDescriptorfeafc8f - Fix typos in some
OlympusMakernoteDescriptordescription methods 3162299 - In
GifHeaderDirectoryreplaceTAG_TRANSPARENT_COLOR_INDEXwithTAG_BACKGROUND_COLOR_INDEXf27dc5d 7ac3b9a #142 - In
JfifDirectoryreplacegetImageWidth/HeightwithgetResX/Ye458489 #143 - Deprecate
ExifDirectoryBase'sTAG_LIGHT_SOURCEin favour ofTAG_WHITE_BALANCEe298fde
Performance
- Considerable improvement when reading large TIFF files (such as raw files) using
ImageMetadataReader0c7c577 #164 - Perform type check outside loop b3e2f9b
- Use Collections.singletonList instead of Arrays.asList with single item 4cb5200
- Slightly reduce allocations in PNG reader 455a83a
- Simplify Tag.getTagTypeHex() 54cb1a8
Miscellaneous changes
Metadatastores and returnsDirectoryinstances in the order they were created bb9a290FileTypeDetectorthrows if stream doesn't support mark/reset 6a6727c- unexpected PNG ICC compression method is registered as an error e2b6a39
- Project now has an SVG logo which looks better on high DPI displays b4572a3
- Bump junit version 8debfd8
- Make Javadoc compilable under Java 8 1ef9bf9 #137
- Many documentation and internal fixes