From e859809dae2e8f12f6f06d12ba46d392e514a509 Mon Sep 17 00:00:00 2001 From: Andreas Huggel Date: Thu, 12 Aug 2004 08:18:27 +0000 Subject: [PATCH] Updated for IPTC support --- doc/exiv2.dot | 5 +- doc/exiv2.gif | Bin 5143 -> 25003 bytes doc/getting-started.html | 45 +- doc/index.html | 2 +- doc/iptc.xml | 866 +++++++++++++++++++++++++++++++++++++++ doc/iptc.xsl | 137 +++++++ doc/makernote.html | 4 +- doc/tags.xsl | 4 +- 8 files changed, 1038 insertions(+), 25 deletions(-) create mode 100644 doc/iptc.xml create mode 100644 doc/iptc.xsl diff --git a/doc/exiv2.dot b/doc/exiv2.dot index bbe9a117..fb509c78 100644 --- a/doc/exiv2.dot +++ b/doc/exiv2.dot @@ -3,7 +3,7 @@ # Brief Dot file for a graph showing the component dependencies # of the Exiv2 library. Run the following command to get the image: # $ dot -Tgif -oexiv2.gif exiv2.dot -# Version $Name: $ $Revision: 1.3 $ +# Version $Name: $ $Revision: 1.4 $ # Author Andreas Huggel (ahu) # ahuggel@gmx.net # Date 18-Feb-04, ahu: created @@ -15,9 +15,8 @@ L1 [shape=plaintext] ; L2 [shape=plaintext] ; L3 [shape=plaintext] ; L4 [shape=plaintext] ; -L5 [shape=plaintext] ; -"L5" -> "L4" -> "L3" -> "L2" -> "L1" [style=invis] ; +"L4" -> "L3" -> "L2" -> "L1" [style=invis] ; "exif" [shape=box] ; "iptc" [shape=box] ; diff --git a/doc/exiv2.gif b/doc/exiv2.gif index c1ba777b664bcb010a92969c60e3f08107e7a989..7701ad402586dc2290dcaaee11a9f1807edfc1e5 100644 GIT binary patch literal 25003 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 Old;v+Nq4HrwEqi#*@|EQ delta 5039 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 - Exiv2 - Exif metadata manipulation library and tools + Exiv2 - Exif and IPTC metadata manipulation library and tools @@ -19,29 +19,39 @@ the members of the Exiv2 namespace.

Classes

-

Exiv2::ExifData is -the top-level class of the Exiv2 library. It has a container of Exif -metadata and defines related methods. The container holds +

Exiv2::ExifData +and Exiv2::IptcData +are the top-level classes of the Exiv2 library. Both have a container +of Exif and IPTC metadata, respectively, and define related methods to +access and manipulate the metadata. The containers hold Exiv2::Metadatum objects. Class Exiv2::Metadatum defines methods to access the -information of one Exif tag. It models the tag data as a key and value -pair. A key is just a well-formed string. The abstract base class -Exiv2::Value defines the -interface to access tag information, from which concrete values are +information of one Exif tag or IPTC dataset. It models the tag data as +a key and value pair. +The abstract base class +Exiv2::Key defines the +interface for a key. Concrete keys implement Exif and IPTC keys. +The abstract base class +Exiv2::Value defines +the interface to access tag information, from which concrete values are derived. The actual value used in a metadatum depends on the type of -the Exif tag. It is usually determined when the Exif metadata is read -from an image. It is also possible to manually create a Value and together -with a key add it to an ExifData container.

+the Exif tag or IPTC dataset. It is usually determined when the Exif metadata +is read from an image. It is also possible to manually create a Value and +together with a key add it to an ExifData or IptcData container.

Examples

-

Two simple examples demonstrate the basic use of Exiv2 +

Several simple examples demonstrate the basic use of Exiv2 functionality: Exifprint -shows how the Exif data of an image can be read and written to the screen. +shows how the Exif data of an image can be read and written to the screen. +Iptcprint is a similar +example to print IPTC data. Addmoddel shows how to -add, modify and delete Exif metadata. For more real-world code have a look -at the implementation of the different actions of the Exiv2 utility -(actions.cpp).

+add, modify and delete Exif metadata. +Exifcomment shows how to +set the exif comment of an image. +For more real-world code have a look at the implementation of the +different actions of the Exiv2 utility (actions.cpp).

Makernotes

@@ -75,7 +85,8 @@ same as the basenames of their source files. Each component has its own header and source files.

-

Exiv2 components diagram

+

Exiv2 Components Diagram

+

Exiv2 components diagram

 

diff --git a/doc/index.html b/doc/index.html index b6f44a1f..96403dc0 100644 --- a/doc/index.html +++ b/doc/index.html @@ -1,7 +1,7 @@ - Exiv2 - Exif metadata manipulation library and tools + Exiv2 - Exif and IPTC metadata manipulation library and tools diff --git a/doc/iptc.xml b/doc/iptc.xml new file mode 100644 index 00000000..ad2a66d7 --- /dev/null +++ b/doc/iptc.xml @@ -0,0 +1,866 @@ + + + +
+IPTC datasets defined in Exiv2 + +

Datasets are defined according to the specification of the IPTC +Information Interchange Model (IIM).

+

Click on a column header to sort the table.

+
+
+ + + ModelVersion + 0 + 0x0000 + Envelope + true + false + 2 + 2 + Iptc.Envelope.ModelVersion + Version of IIM part 1 + + + Destination + 5 + 0x0005 + Envelope + false + true + 0 + 1024 + Iptc.Envelope.Destination + Routing information + + + FileFormat + 20 + 0x0014 + Envelope + true + false + 2 + 2 + Iptc.Envelope.FileFormat + IIM appendix A file format + + + FileVersion + 22 + 0x0016 + Envelope + true + false + 2 + 2 + Iptc.Envelope.FileVersion + File format version + + + ServiceId + 30 + 0x001e + Envelope + true + false + 0 + 10 + Iptc.Envelope.ServiceId + Identifies the provider and product + + + EnvelopeNumber + 40 + 0x0028 + Envelope + true + false + 8 + 8 + Iptc.Envelope.EnvelopeNumber + Combined unique identification + + + ProductId + 50 + 0x0032 + Envelope + false + true + 0 + 32 + Iptc.Envelope.ProductId + Identifies service subset + + + EnvelopePriority + 60 + 0x003c + Envelope + false + false + 1 + 1 + Iptc.Envelope.EnvelopePriority + Envelope handling priority + + + DateSent + 70 + 0x0046 + Envelope + true + false + 8 + 8 + Iptc.Envelope.DateSent + Date material was sent + + + TimeSent + 80 + 0x0050 + Envelope + false + false + 11 + 11 + Iptc.Envelope.TimeSent + Time material was sent + + + CharacterSet + 90 + 0x005a + Envelope + false + false + 0 + 32 + Iptc.Envelope.CharacterSet + Specifies character sets + + + UNO + 100 + 0x0064 + Envelope + false + false + 14 + 80 + Iptc.Envelope.UNO + Unique Name of Object + + + ARMId + 120 + 0x0078 + Envelope + false + false + 2 + 2 + Iptc.Envelope.ARMId + Abstract Relationship Method identifier + + + ARMVersion + 122 + 0x007a + Envelope + false + false + 2 + 2 + Iptc.Envelope.ARMVersion + Abstract Relationship Method version + + + RecordVersion + 0 + 0x0000 + Application2 + true + false + 2 + 2 + Iptc.Application2.RecordVersion + Version of IIM part 2 + + + ObjectType + 3 + 0x0003 + Application2 + false + false + 3 + 67 + Iptc.Application2.ObjectType + IIM appendix G object type + + + ObjectAttribute + 4 + 0x0004 + Application2 + false + true + 4 + 68 + Iptc.Application2.ObjectAttribute + IIM appendix G object attribute + + + ObjectName + 5 + 0x0005 + Application2 + false + false + 0 + 64 + Iptc.Application2.ObjectName + Shorthand reference of content + + + EditStatus + 7 + 0x0007 + Application2 + false + false + 0 + 64 + Iptc.Application2.EditStatus + Content status + + + EditorialUpdate + 8 + 0x0008 + Application2 + false + false + 2 + 2 + Iptc.Application2.EditorialUpdate + Indicates the type of update + + + Urgency + 10 + 0x000a + Application2 + false + false + 1 + 1 + Iptc.Application2.Urgency + Editorial urgency of content + + + Subject + 12 + 0x000c + Application2 + false + true + 13 + 236 + Iptc.Application2.Subject + Structured definition of the subject + + + Category + 15 + 0x000f + Application2 + false + false + 0 + 3 + Iptc.Application2.Category + Identifies the subject + + + SuppCategory + 20 + 0x0014 + Application2 + false + true + 0 + 32 + Iptc.Application2.SuppCategory + Refines the subject + + + FixtureId + 22 + 0x0016 + Application2 + false + false + 0 + 32 + Iptc.Application2.FixtureId + Identifies content that recurs + + + Keywords + 25 + 0x0019 + Application2 + false + true + 0 + 64 + Iptc.Application2.Keywords + Information retrieval words + + + LocationCode + 26 + 0x001a + Application2 + false + true + 3 + 3 + Iptc.Application2.LocationCode + ISO country code for content + + + LocationName + 27 + 0x001b + Application2 + false + true + 0 + 64 + Iptc.Application2.LocationName + Full country name for content + + + ReleaseDate + 30 + 0x001e + Application2 + false + false + 8 + 8 + Iptc.Application2.ReleaseDate + Earliest intended usable date + + + ReleaseTime + 35 + 0x0023 + Application2 + false + false + 11 + 11 + Iptc.Application2.ReleaseTime + Earliest intended usable time + + + ExpirationDate + 37 + 0x0025 + Application2 + false + false + 8 + 8 + Iptc.Application2.ExpirationDate + Latest intended usable date + + + ExpirationTime + 38 + 0x0026 + Application2 + false + false + 11 + 11 + Iptc.Application2.ExpirationTime + Latest intended usable time + + + SpecialInstructions + 40 + 0x0028 + Application2 + false + false + 0 + 256 + Iptc.Application2.SpecialInstructions + Editorial usage instructions + + + ActionAdvised + 42 + 0x002a + Application2 + false + false + 2 + 2 + Iptc.Application2.ActionAdvised + Action provided to previous data + + + ReferenceService + 45 + 0x002d + Application2 + false + true + 0 + 10 + Iptc.Application2.ReferenceService + Service Identifier of a prior envelope + + + ReferenceDate + 47 + 0x002f + Application2 + false + true + 8 + 8 + Iptc.Application2.ReferenceDate + Date of a prior envelope + + + ReferenceNumber + 50 + 0x0032 + Application2 + false + true + 8 + 8 + Iptc.Application2.ReferenceNumber + Envelope Number of a prior envelope + + + DateCreated + 55 + 0x0037 + Application2 + false + false + 8 + 8 + Iptc.Application2.DateCreated + Creation date of intellectual content + + + TimeCreated + 60 + 0x003c + Application2 + false + false + 11 + 11 + Iptc.Application2.TimeCreated + Creation time of intellectual content + + + DigitizationDate + 62 + 0x003e + Application2 + false + false + 8 + 8 + Iptc.Application2.DigitizationDate + Creation date of digital representation + + + DigitizationTime + 63 + 0x003f + Application2 + false + false + 11 + 11 + Iptc.Application2.DigitizationTime + Creation time of digital representation + + + Program + 65 + 0x0041 + Application2 + false + false + 0 + 32 + Iptc.Application2.Program + Content creation program + + + ProgramVersion + 70 + 0x0046 + Application2 + false + false + 0 + 10 + Iptc.Application2.ProgramVersion + Content creation program version + + + ObjectCycle + 75 + 0x004b + Application2 + false + false + 1 + 1 + Iptc.Application2.ObjectCycle + Morning + + + Byline + 80 + 0x0050 + Application2 + false + true + 0 + 32 + Iptc.Application2.Byline + Name of content creator + + + BylineTitle + 85 + 0x0055 + Application2 + false + true + 0 + 32 + Iptc.Application2.BylineTitle + Title of content creator + + + City + 90 + 0x005a + Application2 + false + false + 0 + 32 + Iptc.Application2.City + City of content origin + + + SubLocation + 92 + 0x005c + Application2 + false + false + 0 + 32 + Iptc.Application2.SubLocation + Location within city + + + ProvinceState + 95 + 0x005f + Application2 + false + false + 0 + 32 + Iptc.Application2.ProvinceState + Province/State of content origin + + + CountryCode + 100 + 0x0064 + Application2 + false + false + 3 + 3 + Iptc.Application2.CountryCode + ISO country code of content origin + + + CountryName + 101 + 0x0065 + Application2 + false + false + 0 + 64 + Iptc.Application2.CountryName + Full country name of content origin + + + TransmissionReference + 103 + 0x0067 + Application2 + false + false + 0 + 32 + Iptc.Application2.TransmissionReference + Location of original transmission + + + Headline + 105 + 0x0069 + Application2 + false + false + 0 + 256 + Iptc.Application2.Headline + Content synopsis + + + Credit + 110 + 0x006e + Application2 + false + false + 0 + 32 + Iptc.Application2.Credit + Content provider + + + Source + 115 + 0x0073 + Application2 + false + false + 0 + 32 + Iptc.Application2.Source + Original owner of content + + + Copyright + 116 + 0x0074 + Application2 + false + false + 0 + 128 + Iptc.Application2.Copyright + Necessary copyright notice + + + Contact + 118 + 0x0076 + Application2 + false + true + 0 + 128 + Iptc.Application2.Contact + Person or organisation to contact + + + Caption + 120 + 0x0078 + Application2 + false + false + 0 + 2000 + Iptc.Application2.Caption + Content description + + + Writer + 122 + 0x007a + Application2 + false + true + 0 + 32 + Iptc.Application2.Writer + Person responsible for caption + + + RasterizedCaption + 125 + 0x007d + Application2 + false + false + 7360 + 7360 + Iptc.Application2.RasterizedCaption + Black and white caption image + + + ImageType + 130 + 0x0082 + Application2 + false + false + 2 + 2 + Iptc.Application2.ImageType + Color components in an image + + + ImageOrientation + 131 + 0x0083 + Application2 + false + false + 1 + 1 + Iptc.Application2.ImageOrientation + Indicates the layout of an image + + + Language + 135 + 0x0087 + Application2 + false + false + 2 + 3 + Iptc.Application2.Language + ISO 639:1988 language code + + + AudioType + 150 + 0x0096 + Application2 + false + false + 2 + 2 + Iptc.Application2.AudioType + Information about audio content + + + AudioRate + 151 + 0x0097 + Application2 + false + false + 6 + 6 + Iptc.Application2.AudioRate + Sampling rate of audio content + + + AudioResolution + 152 + 0x0098 + Application2 + false + false + 2 + 2 + Iptc.Application2.AudioResolution + Sampling resolution of audio content + + + AudioDuration + 153 + 0x0099 + Application2 + false + false + 6 + 6 + Iptc.Application2.AudioDuration + Duration of audio content + + + AudioOutcue + 154 + 0x009a + Application2 + false + false + 0 + 64 + Iptc.Application2.AudioOutcue + Final words or sounds of audio content + + + PreviewFormat + 200 + 0x00c8 + Application2 + false + false + 2 + 2 + Iptc.Application2.PreviewFormat + IIM appendix A file format of preview + + + PreviewVersion + 201 + 0x00c9 + Application2 + false + false + 2 + 2 + Iptc.Application2.PreviewVersion + File format version of preview + + + Preview + 202 + 0x00ca + Application2 + false + false + 0 + 256000 + Iptc.Application2.Preview + Binary preview data + + +
diff --git a/doc/iptc.xsl b/doc/iptc.xsl new file mode 100644 index 00000000..e07896ea --- /dev/null +++ b/doc/iptc.xsl @@ -0,0 +1,137 @@ + + + + + + + + + Exiv2 - Exif and IPTC metadata manipulation library and tools + + + + + +

Exif and IPTC metadata manipulation library and tools

+ + + + + +
+ + + +
+ + + + + + + + +

+ +
+ + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + Tag name + Tag description + Tag (dec) + Tag (hex) + Record name + Mandatory + Repeatable + Min. bytes + Max. bytes + Key + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/doc/makernote.html b/doc/makernote.html index 5e921ea7..15360ed8 100644 --- a/doc/makernote.html +++ b/doc/makernote.html @@ -1,14 +1,14 @@ - Exiv2 - Exif metadata manipulation library and tools + Exiv2 - Exif and IPTC metadata manipulation library and tools -

Exif metadata manipulation library and tools

+

Exif and IPTC metadata manipulation library and tools

MakerNote Formats and Specifications

According to the Exif 2.2 standard, the makernote is "a tag for manufacturers of Exif writers to record any desired information. The contents are up to the manufacturer, but this tag should not be used for any other than its intended purpose." Many (but not all) vendors write the makernote in IFD (Image File Directory) format, i.e., in the same format as the rest of the Exif information is encoded. Many manufacturers apparently store a lot of information in the makernote field but unfortunately, most vendors do not publish their specifications.

diff --git a/doc/tags.xsl b/doc/tags.xsl index 00a484bc..818da268 100644 --- a/doc/tags.xsl +++ b/doc/tags.xsl @@ -7,13 +7,13 @@ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" /> - Exiv2 - Exif metadata manipulation library and tools + Exiv2 - Exif and IPTC metadata manipulation library and tools -

Exif metadata manipulation library and tools

+

Exif and IPTC metadata manipulation library and tools