Having been stuck on v0.9.x for ages due to my somewhat arbrary versioning scheme (or lack of one!), I thought I might as well get a v1.0.0 out, so here it is. Changes since v0.9.9 are as thus:
- Added support for IPTC metadata as stored in Adobe APP13 segments —
- Implemented an IPTC reader/writer class, TIPTCData, in a new unit, CCR.Exif.IPTC.pas.
- The interface of TIPTCData is broadly modelled on TExifData’s — thus, there are ‘sections’ and ‘tags’, with high level tag properties on TIPTCData itself.
- At a lower level, the RemoveMetadataFromJPEG global routine can now delete IPTC data, and you can enumerate the data blocks of an Adobe APP13 segment from an IJPEGSegment instance.
- TJPEGImageEx has received a few amendments —
- Added an IPTCData property.
- Added an overload to Assign that allows for the preservation of any metadata, interpreted by my code or not, when a bitmap is assigned.
- Fixed a bug in which calling the regular Assign didn’t cause the ExifData property to be updated.
- Two more Nikon maker note types now parsed. Thanks goes to Stefan Grube for updating the Exif List demo’s MakerNotes.ini for this.
- Fixed bug of JPEG parsing code not realising a segment with a marker number of 0 has no data.
- Fixed typo in TStreamHelper.ReadLongInt spotted by Jeff Hamblin.
- Changed the types of the ExifImageWidth, ExifImageHeight and FocalLengthIn35mmFilm properties of TCustomExifData so as to give them MissingOrInvalid and AsString sub-properties. (Basically, they now use custom record types that have methods and operator overloads.)
- Changed behaviour of TCustomExifData’s enumerator to not skip empty sections.
- The LoadFromJPEG methods of TExifData are now procedures rather than functions.
- Added a couple more demos, namely an IPTC editor and a console app to strip specified types of metadata from one or more JPEG files.
- Removed all previously deprecated symbols.
[Update 19/1/10 — grr, gremlins. Try downloading again to get a version compilable in D2009 or D2010 (CCR.Exif.JPEGUtils.pas and CCR.Exif.IPTCUtils.pas should now be marked v1.0.0a).]