On Aug 7, 2008, at 4:44 AM, Charles Matthew Chen wrote:

Hi Christopher.,

  XMP and EXIF are both stored in (different, both optional) APP1
segments of a Jpeg file.  IPTC is stored in APP13 segments.


  Both IPTC and XMP can and often are written into the same Jpeg file
in these two separate locations.

I've noticed this. I believe PhotoMechanic embeds IPTC and XMP into the same JPEG file.


  IPTC Information Interchange Model (the full name of IPTC) is a
metadata standard developed by the International Press
Telecommunications Council.  My understanding is that the binary
format for this metadata used in Jpeg files was designed and
popularized by Adobe Photoshop, hence its photoshop-file-like
structure.

IPTC IIM is written by several different tools. Lightroom and Aperture also embed IPTC IIM data into JPEGs, although it's not necessarily binary. I am able to view JPEG files I produced in Lightroom that contain IPTC metadata using a hexeditor and my headlines and captions are visible ASCII characters.


  XMP data is an XML-based metadata format developed by Adobe that is
in many ways redundant with (as it was intended to supercede) IPTC
data.

  XMP is more open-ended and flexible than IPTC; IPTC data can be
readily transformed into XMP format; not all XMP data can be
transformed into IPTC.

http://en.wikipedia.org/wiki/Extensible_Metadata_Platform
http://en.wikipedia.org/wiki/International_Press_Telecommunications_Council

  If you are reading IPTC and/or XMP data, I would suggest using the
XMP if present; if not, using the IPTC.

Interesting... I probably need to support both IPTC and XMP in the long run.

So ... do both the APP1 and APP13 sections follow the same section format as the other sections? They're started by their section marker, then a 2 byte length section, and then the actual data?

If so, would it be difficult (in your opinion) to read the APP1/APP13 sections and then drop that raw data on top of another JPEG? Do you have some APIs I could use to possibly do that? Or does the Sanselan writing code only work with Metadata objects (and other higher level concepts)?


-c

Reply via email to