Releases: drewnoakes/metadata-extractor
Releases · drewnoakes/metadata-extractor
v2.10.0
Exif
- Remove storage of thumbnail data in directories
GIF
- Significant extension of GIF support, including embedded comments, XMP and ICC (#222)
IPTC
- Fix parsing IPTC dates in
Directory.getDate
(#212)
JPEG
PNG
TIFF
- Support multi-page TIFF (#228)
XMP
- Remove XMP tags (see 5b07a49)
- Support extended XMP decoding in JPEG, where XMP data is too large for a single JPEG segment (#184, #204)
- Update XMPCore dependency from version 5.1.2 to 5.1.3 (#194, #188)
Makernotes
- Support Reconyx Hyper and UltraFire makernotes (#227)
- Considerably extend Olympus RAW support (#210)
- Only treat Canon makernote tags as embedded directories if they have the correct type (#116)
- Extend Sony, Leica, Samsung and Panasonic support (#214)
- Add support for Apple makernotes
- Extend Makernote support for Canon, including lens IDs
- Fix capitalisation in
OlympusEquipmentMakernoteDescriptor
- Fix typo in
CanonMakernoteDirectory.TAG_FOCUS_CONTINUOUS
descriptor output - Don't require IFD0 to be present in order to process makernotes
Miscellaneous
- Defer string charset decoding until after extraction, allowing clients to specify alternate encodings (#135, #165#, #166, #191, #192)
- Improved null value tracking and NRE prevention
- Use Euclidean Algorithm to simplify
Rational
values (#226) - Introduce
Rational.isZero()
- Make
Rational
implementComparable<Rational>
- Don't share thread-unsafe
DecimalFormat
instances (#237) - Make JAR file executable via
Main-Class
(#176) - Raise minimum Java version from 1.5 to 1.6 (#218)
- Fix Javadoc for JDK 1.8
- Remove Ant build file
v2.9.1
Fixes:
- Potential
OutOfMemoryException
due to overflow arithmetic errors inTiffReader
(@dusan-rychnovsky #167) - Off-by-one error in
IptcReader
when last tag in data was one byte in length (@cshclm #172)
Features:
- Track some hierarchy between
Directory
instances viagetParent()
.
v2.9.0
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
PhotoshopDirectory
2a72692 05f67c3 - Potential bound exception in
NikonType2MakernoteDescriptor
efa1c4a - Incorrect return value from
AdobeJpegDescriptor.getDctEncodeVersionDescription
4959b51 - Typos in
PcxDirectory
tag 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_CREATED
168a208 - Non-
8BIM
Photoshop IRBs don't stop processing ef59b50 #125 #128 TiffReader
attempts 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
JpegComponent
methodsgetHorizontalSamplingFactor()
andgetVerticalSamplingFactor()
6c31782 #156 - Make
GpsDirectory.getGpsDate()
locale independent 29e95df #160 #161 - Make
PngMetadataReaderTest
locale 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
ExifDescriptorBase
21a5391 - Remove trailing space in
PhotoshopDescriptor
output 674c609 - Remove trailing full stop in
ExifDescriptorBase
output 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_SPECIFICATION
be55336 - Capitalise the name of
XmpDirectory
4777af1
API changes
- Deprecate
ExifThumbnailDirectory.TAG_THUMBNAIL_COMPRESSION
825c439 12f023a 4e084ca - Remove unused class
DefaultTagDescriptor
feafc8f - Fix typos in some
OlympusMakernoteDescriptor
description methods 3162299 - In
GifHeaderDirectory
replaceTAG_TRANSPARENT_COLOR_INDEX
withTAG_BACKGROUND_COLOR_INDEX
f27dc5d 7ac3b9a #142 - In
JfifDirectory
replacegetImageWidth
/Height
withgetResX
/Y
e458489 #143 - Deprecate
ExifDirectoryBase
'sTAG_LIGHT_SOURCE
in favour ofTAG_WHITE_BALANCE
e298fde
Performance
- Considerable improvement when reading large TIFF files (such as raw files) using
ImageMetadataReader
0c7c577 #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
Metadata
stores and returnsDirectory
instances in the order they were created bb9a290FileTypeDetector
throws 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
v2.8.1
- When a parsing date with no timezone specified, don't use default (assume UTC/GMT) (#97)
- Formatting of f/stop descriptions changed to
f/2.8
instead ofF2.8
(#97) - Extend Exif exposure program decoding (#97)
- Add Canon LensType tag (#97)
- Handle XMP data with different (erroneous yet common) preamble in JPEG files (#102)
v2.8.0
- WebP support (#85)
- File system metadata (#86)
- ICO file support (#61)
- PCX support (#89)
- Improve Exif tag comprehension across directory types (#3, #8, #9, #82, #83)
- Support PNG
sBIT
andpHYs
chunks - Extract
tEXt
andiTXt
chunks from PNG (#62) Metadata
may now hold multiple instances of aDirectory
subclass (#61, #65)- Improve date/time formatting of EXIF-GPS and IPTC data
- Detect new file types: RIFF (#85), PCX (#89), ICO (#61), additional ORF format
- Read image resources from Photoshop data (#87)
- Fix decoding of 8BIM Photoshop strings (#57)
- Process EXIF, ICC and XMP data embedded in Photoshop data (#88)
- Extend XMP support (#92)
- Extend Olympus makernote support (#93)
v2.7.2
- Bug Fixes
- Fix Tag.hasTagName() to return a boolean
v2.7.1
- Fixes
- Fix exception related to IPTC character encoding
- Fix exception caused by zero-length IPTC tags
- Mute exceptions about PNG chunks we don't even process
- Improvements
- Decode more IPTC version tags correctly
- Add
Tag.hasTagName()
andDirectory.hasTagName(int)
methods - Extract file type detection to reusable
FileTypeDetector
class - Make file type detection more rigorous
- Detect camera RAW formats (still treated as Exif TIFF)
- API changes
- Rename
PngDirectory.TAG_PROFILE_NAME
toPngDirectory.TAG_ICC_PROFILE_NAME
- Removed
ExifReader
's TIFF processing functions. UseTiffReader
instead.
- Rename
- Project
- Regression test data set increased significantly
v2.7.0
- Features
- Added support for PNG, GIF and BMP files.
- Added makernote support for:
- Leica
- Sanyo
- Ricoh
- Support for character encoding in IPTC data.
- Extract IPTC data found in Exif chunks.
- Improvements
- Optimised JPEG processing, avoiding unnecessary IO.
- Improved makernote support for:
- Canon
- Fujifilm
- Kodak
- Panasonic
- Olympus
- Sigma
- Sony
- Javadoc improvements.
- Many more unit tests.
- Bug Fixes
- Fixed incorrect rejection of rare but correct JPEG files.
- Unit tests work across cultures.
- Fixed bug in Lat/Lng coordinates containing a zero value.
- API Changes
- Some
Casio*.TAG_CASIO_*
renamed toCasio*.TAG_*
- Some
Olympus*.TAG_OLYMPUS_*
renamed toOlympus*.TAG_*
- Some
Gps*.TAG_GPS_*
renamed toGps*.TAG_*
- Some
- Project
- Migrated project to GitHub.
- Added Maven
pom.xml
project file. - Targeting JDK 1.5 instead of 1.6.
- Update XMPCore to version 5.1.2.
- Update junit to version 4.11.0
- Introduce Travis-CI build
There are many changes in this release. Please open an issue if you encounter an API change which is not listed here.
v2.6.4
Released 23 December 2012
- Targeting JDK 1.6 instead of 1.7.
- Added XMP Rating tag.
v2.6.3
Released 28 October 2012
- Added support for Olympus ORF & Panasonic RW2 RAW files which use non-standard TIFF markers.
- Better default descriptions of long array tag values.
- Fixed some minor documentation issues.
- Cause
ImageMetadataReader.java
to truncate tag descriptions that are longer than 1024 characters. - Extended reporting from
ProcessAllImagesInFolderUtility.java
. - Updated templating for online Javadoc, as generated by Java 7.