Metadata Extractor Versions Save

Extracts Exif, IPTC, XMP, ICC and other metadata from image, video and audio files

2.10.0

7 years ago

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 5b07a49f7b3d90c)
  • 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

2.9.1

8 years ago

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().

2.9.0

8 years ago

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: https://github.com/drewnoakes/metadata-extractor/compare/2.8.1...2.9.0

New features

  • Support for RAF files df0680855 e44bbea0 b04b20d78cf #73 #109
  • Add support for JFXX (JFIF extension) segments da56f27ff36
  • Add support for "Ducky" segments, from Photoshop's "Save for Web" feature 1416d638282 #115
  • Read JFIF thumb width/height tags 2aec48ab42
  • Process XMP found in Exif tag 0x02BC 6619b7cb87b #157
  • Process sub-IFD found via Exif tag 6fab2ec5
  • Support non-standard TIFF format code 13 that points to new IFDs 38efe09f8d59 73eeefb8bb
  • Support arrays of IFD pointers within a tag, not just a single pointer d5a254c1e34
  • Process additional XMP tags 75799bbd52 #159
  • Support additional WebP chunk types 4f3d75ef3 747127e6fc

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 4bac9194663 #121 #129
  • Incorrect PNG chromaticity 7d0d44e360b7b
  • Potential bound exception in PhotoshopDirectory 2a726920e05 05f67c39447f
  • Potential bound exception in NikonType2MakernoteDescriptor efa1c4ada3
  • Incorrect return value from AdobeJpegDescriptor.getDctEncodeVersionDescription 4959b51386
  • Typos in PcxDirectory tag names 40d6484403
  • Validate Olympus makernote dates 80afe26a0 a5fdcdff
  • Validate ICC dates so exception won't halt reading 8bfc2e986 185ab460e
  • Validate IPTC dates during parsing cee344387
  • Parse IPTC IptcDirectory.TAG_DIGITAL_DATE_CREATED 168a208c0
  • Non-8BIM Photoshop IRBs don't stop processing ef59b508 #125 #128
  • TiffReader attempts to recover from invalid byte ordering b336b3a #136
  • Correctly handle alternative Olympus makernote preamble 5793c81e8 73f1a482 #93
  • Clear out fractional seconds from computed dates (PNG and ICC) 2ea2549d #146
  • Fix swapped JpegComponent methods getHorizontalSamplingFactor() and getVerticalSamplingFactor() 6c3178201c2 #156
  • Make GpsDirectory.getGpsDate() locale independent 29e95dfdf #160 #161
  • Make PngMetadataReaderTest locale independent e0eb4b275dc2 #162 #163

Description formats

  • Standardisation of f-stop descriptions 45f1e10d72e5 0b5d3f9a3d f796031d
  • Change formatting of focal length descriptions 120cd8042
  • Use offset in date descriptions, not timezone name 8e4ffb2c0
  • ICC value formats e6ab7b42e 40d60fbec45
  • Fix typo in 'fluorescent' in ExifDescriptorBase 21a539172
  • Remove trailing space in PhotoshopDescriptor output 674c60960
  • Remove trailing full stop in ExifDescriptorBase output d7a0cf33122
  • Number formatting in Olympus makernote descriptions fb1997e072
  • Don't show lens f-stop range when upper and lower values are identical b74aca1b0
  • Update shutter speed value formatting e8799446e
  • Describe ExifDescriptorBase.TAG_LENS_SPECIFICATION be55336182c6
  • Capitalise the name of XmpDirectory 4777af113

API changes

  • Deprecate ExifThumbnailDirectory.TAG_THUMBNAIL_COMPRESSION 825c43914 12f023ad25 4e084caa0d
  • Remove unused class DefaultTagDescriptor feafc8f01
  • Fix typos in some OlympusMakernoteDescriptor description methods 316229957e
  • In GifHeaderDirectory replace TAG_TRANSPARENT_COLOR_INDEX with TAG_BACKGROUND_COLOR_INDEX f27dc5da1d2 7ac3b9a15 #142
  • In JfifDirectory replace getImageWidth/Height with getResX/Y e458489ff1 #143
  • Deprecate ExifDirectoryBase's TAG_LIGHT_SOURCE in favour of TAG_WHITE_BALANCE e298fde1bdaab

Performance

  • Considerable improvement when reading large TIFF files (such as raw files) using ImageMetadataReader 0c7c57753b9a #164
  • Perform type check outside loop b3e2f9bd97
  • Use Collections.singletonList instead of Arrays.asList with single item 4cb52005
  • Slightly reduce allocations in PNG reader 455a83a673a
  • Simplify Tag.getTagTypeHex() 54cb1a8d01e6

Miscellaneous changes

  • Metadata stores and returns Directory instances in the order they were created bb9a2900
  • FileTypeDetector throws if stream doesn't support mark/reset 6a6727c5c
  • unexpected PNG ICC compression method is registered as an error e2b6a39e0
  • Project now has an SVG logo which looks better on high DPI displays b4572a335e8
  • Bump junit version 8debfd81c
  • Make Javadoc compilable under Java 8 1ef9bf94fce #137
  • Many documentation and internal fixes

2.8.1

9 years ago
  • 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)

2.8.0

9 years ago
  • 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)

2.7.2

9 years ago
  • Bug Fixes
    • Fix Tag.hasTagName() to return a boolean

2.7.1

9 years ago
  • 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

2.7.0

9 years ago
  • 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.

2.6.4

9 years ago

Released 23 December 2012

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

2.6.3

9 years ago

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.