Version 1.0 - Initial release

git-svn-id: https://metadata-extractor.googlecode.com/svn/trunk@1 7bd79e3c-ab28-1fa5-d007-79fa9fde61af
Descriptive tag values, including units and text for enumerations.
Decoupling from JDK 1.4-specific libraries (tested with JDK 1.3).
More complete list of tags, both as constants for direct lookup, and via the static lookup method.

git-svn-id: https://metadata-extractor.googlecode.com/svn/trunk@2 7bd79e3c-ab28-1fa5-d007-79fa9fde61af
Version 1.2

ExifExtractor.java
- Proper traversing of Exif file structure and complete refactor & tidy of the codebase (a few unnoticed bugs removed)
- Reads makernote data for 6 families of camera (5 makes)
- Tags now stored in directories... use the IFD_* constants to refer to the image file directory you require (Exif, Interop, GPS and Makernote*) -- this avoids collisions where two tags share the same code
- Correct extraction of multi-component values
- No longer decodes image to extract Exif data -- this is much faster
- Takes componentCount of unknown tags into account
- Now understands GPS tags (thanks to Colin Briton for his help with this)
- Returns null when no Exif data present, instead of throwing an exception
- Some other bug fixes, pointed out by users around the world.  Thanks!
- Removed unnecessary casting operations
- Added a few more comments

ExifLoader
- Removed (unnecessary)

ImageInfo.java
- Make use of new Rational method toSimpleString() for more elegant output
- Stored IFD directories in separate tag-spaces
- iterator() now returns an Iterator over a list of TagValue objects
- More get*Description() methods to detail GPS tags, among others

TagValue.java
- New class to encapsualte information about a particular tag

Rational.java
- Added toSimpleString() method, which returns a simplified and hopefully more readable version of the Rational. I.e. 2/10 -> 1/5, 10/2 -> 5

JpegSegmentReader
- New class to extract APP1 segment (and others) from a Jpeg file -- this
  avoids decoding images just to get metadata

tests\*.java
- First collection of basic unit tests, to compile against JUnit
- Doesn't yet cover all classes

git-svn-id: https://metadata-extractor.googlecode.com/svn/trunk@3 7bd79e3c-ab28-1fa5-d007-79fa9fde61af
Version 2.0

Enormous changes to the class and package structure in this release prohibit a class-by-class breakdown of changes.  The focus is no longer on Exif metadata alone, but now on general metadata extraction from multiple media types.

Changes support:
- easier future extensibility
- Iptc metadata extraction
- multiple directories of tags
- descriptor class for interpreting values in a given directory
- multiple media and metadata types
- enhanced handling of exif makernote values
- many more unit tests
- numerous enhancements
- minor bug fixes

Simpler extensibility changes the focus from exif extraction alone and opens the scope to general metadata extraction.  Future development will introduce new media and metadata support with little or no impact to existing classes.


git-svn-id: https://metadata-extractor.googlecode.com/svn/trunk@4 7bd79e3c-ab28-1fa5-d007-79fa9fde61af
Version 2.1

Extract methods no longer throw exceptions, with error information stored in Metadata instances, using hasErrors() and getErrors().
Metadata and dependant classes now serializable for network transmission, and persistance in files & databases.
Support for extracting metadata from InputStreams, such as network connections.
Replaced code that depended upon JDK 1.4.


git-svn-id: https://metadata-extractor.googlecode.com/svn/trunk@5 7bd79e3c-ab28-1fa5-d007-79fa9fde61af
Version 2.2

Added support for extraction of Jpeg image information (from the SOF0 segment).  Thanks to Darrell Silver for commencing the code for this extension.
Added support for reading Jpeg comments.
Additional Nikon camera makernote support for D1/D100 family models.  Thanks to Daniel Waeber for providing sample images and to Fabrizio Giudici for publishing his work in decoding this makernote data.
Added convenient writing of thumbnails to files from ExifDirectory.
Fixed a bug in date format strings, whereby times in the AM / PM were indistinguishable.  Thanks to Bill Boland for being the first person to point this out (this was a popular one!)
Fixed bug for multi-component tag values of certain types. Thanks to Derek Wegner for identifying the bug and providing a solution.
More unit tests (consequently, the source-code download is much larger).
First version with an Ant build script.

git-svn-id: https://metadata-extractor.googlecode.com/svn/trunk@6 7bd79e3c-ab28-1fa5-d007-79fa9fde61af
Version 2.2.1

Fixed a bug where JpegDirectory had tag names for image width and height around the wrong way.  Thanks to Sander Smith for pointing this out.

git-svn-id: https://metadata-extractor.googlecode.com/svn/trunk@7 7bd79e3c-ab28-1fa5-d007-79fa9fde61af
Version 2.2.2

Fixed a bug where version strings were assumed to be comprised of exactly four parts, and cases were found where a different number existed.
Updated junit.jar version.


git-svn-id: https://metadata-extractor.googlecode.com/svn/trunk@8 7bd79e3c-ab28-1fa5-d007-79fa9fde61af
Version 2.3.0

New tags from Exif 2.2 specification (A401-A420).
Fixed stack overflow exception in ExifReader for cyclic directory references.  Thanks to John Sidney-Woollett for reporting this bug (reported for Fuji FinePix A101 and Canon 20D).
Fixed rounding error in the shutter speed description which was giving the wrong value most of the time (for example, 1/32 instead of 1/50).  Thanks for Gli Blr and Mark Edwards for pointing out this error.
Fix thread safety bug in ExifReader.
Fixed OutOfMemoryError seen in certain Canon 20D images. Thanks to Henry Yeung for providing an image to reproduce this error.
Support for Windows XP Exif tags (Author, title, comments, etc).
Added more documentation, and removed commented/unused code.
Enhanced descriptor support for Exif tags.
Extract comments in non-ASCII encodings.
Improved camera model MakerNote support:
- New models:
  - Epson (thanks to David Carlson for pointing me in the right direction with this)
  - Kyocera / Contax (very limited)
  - Minolta (it utilises the Olympus format)
  - Panasonic
  - Pentax / Asahi
- Improved support for models:
  - Olympus
  - Canon (tested with newer Canon models, including the 20D)
  - Casio (for more modern models)
Source distribution filesize reduced by using .metadata files, rather than entire sample JPEG files.  These .metadata files contain all non-image JPEG segments, making them suitable for unit tests whilst being much smaller on disk.

git-svn-id: https://metadata-extractor.googlecode.com/svn/trunk@9 7bd79e3c-ab28-1fa5-d007-79fa9fde61af
Removing empty folder.

git-svn-id: https://metadata-extractor.googlecode.com/svn/trunk@10 7bd79e3c-ab28-1fa5-d007-79fa9fde61af
Version 2.3.1

Fixed copy-and-paste errors in ExifDescriptor.java.  Thanks to Ferret Renaud.

git-svn-id: https://metadata-extractor.googlecode.com/svn/trunk@11 7bd79e3c-ab28-1fa5-d007-79fa9fde61af
Version 2.4.0 beta 1

Added support for TIFF files and several camera RAW formats. Tested on NEF (Nikon), CRW & CR2 (Canon), ARW (Sony). Thanks to Darren Salomons and Peter Wayner for their help with this.
New class ImageMetadataReader can be used for all supported file types.
Improved Javadoc coverage.
A few methods marked deprecated in preparation for future releases.

git-svn-id: https://metadata-extractor.googlecode.com/svn/trunk@12 7bd79e3c-ab28-1fa5-d007-79fa9fde61af
Removing old source code branch.

git-svn-id: https://metadata-extractor.googlecode.com/svn/trunk@13 7bd79e3c-ab28-1fa5-d007-79fa9fde61af
Removed some compiler warnings.
Fixed some spelling mistakes.
Patched some invalid UTF8 characters.
Commented out SpecialTests.java as it's only used during the creation of resources for development/testing purposes.
Updated build file to work with newer Ant version.
Added basic IntelliJ IDEA project.

git-svn-id: https://metadata-extractor.googlecode.com/svn/trunk@15 7bd79e3c-ab28-1fa5-d007-79fa9fde61af
Changed underlying type of Rational numerator & denominator from int to long.
Added special handling for the calculation of ISO descriptions on certain Canon cameras. 
ExifDescriptor.getUserCommentDescription uses overload of String constructor that takes encoding names when decoding the comment bytes.
Added ExifDirectory.TAG_LENS tag.
Marked overrides of MetadataReader.extract() as @Deprecated
Renamed GpsDescriptor.getHoursMinutesSecondsDescription as GpsDescriptor.getDegreesMinutesSecondsDescription.
Applied David Ekholm's improvements for calculation of DMS values for GPS position data.
Added 13 new IPTC tags to IptcDirectory (thanks Tom).
Removed manual boxing.
Some code formatting and spelling corrections.
Removed several invalid UTF8 codes from unit test comments.  They should have been written out in alphanumeric sequence instead.

git-svn-id: https://metadata-extractor.googlecode.com/svn/trunk@16 7bd79e3c-ab28-1fa5-d007-79fa9fde61af
Removed dependency upon 'com.sun.image.codec.jpeg' in JpegMetadataReader.  Example code remains that shows how you may use these classes in SampleUsage.java.
Replaced several instances of ArrayList and HashMap with their generic counterparts.
JpegSegmentReader.readSegment() no longer throws JpegProcessingException, simplifying some call sites too.
Simplified ExifReader by removing some fields.  State is now mostly maintained on the stack (will do so entirely in a future refactoring.) 
Added missing file FujifilmMakernoteDirectory.java.
Updated version of jUnit.
Several spelling mistakes corrected.
Removed commented code.

git-svn-id: https://metadata-extractor.googlecode.com/svn/trunk@17 7bd79e3c-ab28-1fa5-d007-79fa9fde61af
Considerable simplification of interface MetadataReader and all its implementations.
Removed old deprecated constructors for reader classes.

git-svn-id: https://metadata-extractor.googlecode.com/svn/trunk@18 7bd79e3c-ab28-1fa5-d007-79fa9fde61af
Tags having empty Rational arrays are now ignored (originally submitted by David Ekholm, Jun 28, 2010.)

git-svn-id: https://metadata-extractor.googlecode.com/svn/trunk@19 7bd79e3c-ab28-1fa5-d007-79fa9fde61af
Fix for modern Nikon software writing GPS coordinates using extremely large nominators and denominators (Originally submitted by David Ekholm, Sep 20, 2010.)

git-svn-id: https://metadata-extractor.googlecode.com/svn/trunk@20 7bd79e3c-ab28-1fa5-d007-79fa9fde61af
Added support for XMP metadata.
Some unit test refactoring.
Fixed a potential array bounds exception in OlympusMakernoteDescriptor.
More spelling corrections.
Excluding 'SampleUsage' from compile task in build.xml to avoid compiler warnings about com.sun.*.
Created new library folder and IntelliJ module for source code of XMPCore.  Users of the library don't need to use this as a .jar version is also included.

git-svn-id: https://metadata-extractor.googlecode.com/svn/trunk@22 7bd79e3c-ab28-1fa5-d007-79fa9fde61af