Skip to content

Releases: drewnoakes/metadata-extractor

v2.10.0

09 Feb 21:49
Compare
Choose a tag to compare

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

  • Extract information about Huffman tables in JPEG files (#231, #234, #239)

PNG

  • Improve error recovery when invalid PNG chunk 4CC seen (#206, #207)

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 implement Comparable<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

20 Apr 23:07
Compare
Choose a tag to compare

Fixes:

  • Potential OutOfMemoryException due to overflow arithmetic errors in TiffReader (@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 via getParent().

v2.9.0

05 Apr 22:02
Compare
Choose a tag to compare

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 methods getHorizontalSamplingFactor() and getVerticalSamplingFactor() 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 replace TAG_TRANSPARENT_COLOR_INDEX with TAG_BACKGROUND_COLOR_INDEX f27dc5d 7ac3b9a #142
  • In JfifDirectory replace getImageWidth/Height with getResX/Y e458489 #143
  • Deprecate ExifDirectoryBase's TAG_LIGHT_SOURCE in favour of TAG_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 returns Directory instances in the order they were created bb9a290
  • FileTypeDetector 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

20 Apr 22:59
Compare
Choose a tag to compare
  • 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 of F2.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

22 Mar 14:53
Compare
Choose a tag to compare
  • 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 and pHYs chunks
  • Extract tEXt and iTXt chunks from PNG (#62)
  • Metadata may now hold multiple instances of a Directory 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

30 Jan 00:49
Compare
Choose a tag to compare
  • Bug Fixes
    • Fix Tag.hasTagName() to return a boolean

v2.7.1

26 Jan 22:03
Compare
Choose a tag to compare
  • 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() and Directory.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 to PngDirectory.TAG_ICC_PROFILE_NAME
    • Removed ExifReader's TIFF processing functions. Use TiffReader instead.
  • Project
    • Regression test data set increased significantly

v2.7.0

07 Dec 21:01
Compare
Choose a tag to compare
  • 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 to Casio*.TAG_*
    • Some Olympus*.TAG_OLYMPUS_* renamed to Olympus*.TAG_*
    • Some Gps*.TAG_GPS_* renamed to Gps*.TAG_*
  • 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

20 Nov 14:25
Compare
Choose a tag to compare

Released 23 December 2012

  • Targeting JDK 1.6 instead of 1.7.
  • Added XMP Rating tag.

v2.6.3

20 Nov 14:24
Compare
Choose a tag to compare

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.