|
|
|
__doctype__
|
|
|
|
<html>
|
|
|
|
__header2__
|
|
|
|
<body>
|
|
|
|
|
|
|
|
<div id="content">
|
|
|
|
__index1__
|
|
|
|
|
|
|
|
<h1>Getting started</h1>
|
|
|
|
|
|
|
|
<h2><a href="namespaces.html">Namespaces</a></h2>
|
|
|
|
|
|
|
|
<p>The <a href="index.html">Exiv2 library</a> is made up of all
|
|
|
|
elements defined in the <a href="namespaceExiv2.html">Exiv2
|
|
|
|
namespace</a>. The Action and Util namespaces are only used by the
|
|
|
|
Exiv2 command line utility.</p>
|
|
|
|
|
|
|
|
<h2><a href="classes.html">Classes</a></h2>
|
|
|
|
|
|
|
|
<p>The top-level class of the Exiv2 library is
|
|
|
|
<a class="el" href="classExiv2_1_1Image.html">Exiv2::Image</a>
|
|
|
|
|
|
|
|
(don't let the components diagram below mislead you). Exiv2::Image
|
|
|
|
defines the interface to access various image metadata. Derived from
|
|
|
|
Exiv2::Image are the implementations of different image formats. Most
|
|
|
|
applications will use
|
|
|
|
<a class="el" href="classExiv2_1_1ImageFactory.html">Exiv2::ImageFactory</a>
|
|
|
|
to access images in files or memory, in which case the image format
|
|
|
|
is transparent to them.</p>
|
|
|
|
|
|
|
|
<p>Exif and IPTC metadata is manipulated through the classes
|
|
|
|
<a class="el" href="classExiv2_1_1ExifData.html">Exiv2::ExifData</a>
|
|
|
|
and <a class="el" href="classExiv2_1_1IptcData.html">Exiv2::IptcData</a>.
|
|
|
|
They hold a container of Exif and IPTC metadata, respectively, and define
|
|
|
|
related methods to access and manipulate the metadata. The containers hold
|
|
|
|
objects derived from
|
|
|
|
<a class="el" href="classExiv2_1_1Metadatum.html">Exiv2::Metadatum</a>.
|
|
|
|
Interface class Exiv2::Metadatum defines methods to access the
|
|
|
|
information of one Exif tag or IPTC dataset. It models the tag data as
|
|
|
|
a key and value pair.
|
|
|
|
The abstract base class
|
|
|
|
<a class="el" href="classExiv2_1_1Key.html">Exiv2::Key</a> defines the
|
|
|
|
interface for a key. Concrete keys implement Exif and IPTC keys.
|
|
|
|
The abstract base class
|
|
|
|
<a class="el" href="classExiv2_1_1Value.html">Exiv2::Value</a> 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 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.</p>
|
|
|
|
|
|
|
|
Top-level Exiv2 classes to access XMP metadata are
|
|
|
|
<a class="el" href="classExiv2_1_1XmpData.html">Exiv2::XmpData</a>,
|
|
|
|
<a class="el" href="classExiv2_1_1Xmpdatum.html">Exiv2::Xmpdatum</a>
|
|
|
|
and <a class="el" href="classExiv2_1_1XmpKey.html">Exiv2::XmpKey</a>.
|
|
|
|
They work similar to the corresponding Exif and IPTC classes.
|
|
|
|
The property-repository is <a class="el" href="classExiv2_1_1XmpProperties.html">Exiv2::XmpProperties</a>.
|
|
|
|
In addition to the expected new members, class
|
|
|
|
<a class="el" href="classExiv2_1_1Image.html">Exiv2::Image</a>
|
|
|
|
also has an interface to access the raw XMP packet.
|
|
|
|
|
|
|
|
All XMP value types are supported: Simple types, structures,
|
|
|
|
arrays, property qualifiers and language alternatives.
|
|
|
|
|
|
|
|
XMP properties are accessed through keys of the form
|
|
|
|
"Xmp.<Prefix>.<PropertyPath>", where <Prefix> is the preferred
|
|
|
|
(or rather, registered) prefix for a schema namespace and
|
|
|
|
<PropertyPath> is the path of the XMP node. In its most basic
|
|
|
|
form, to address simple properties, <PropertyPath> is the name
|
|
|
|
of the property. In general, <PropertyPath> can be used to
|
|
|
|
address any XMP node, including array items, structure fields
|
|
|
|
qualifiers and deeply nested properties.
|
|
|
|
|
|
|
|
Any properties in known namespaces are supported and additional
|
|
|
|
namespaces can be registered.
|
|
|
|
|
|
|
|
The specialized Exiv2 values
|
|
|
|
<a class="el" href="classExiv2_1_1XmpTextValue.html">Exiv2::XmpTextValue</a>,
|
|
|
|
<a class="el" href="classExiv2_1_1XmpArrayValue.html">Exiv2::XmpArrayValue</a>
|
|
|
|
and <a class="el" href="classExiv2_1_1LangAltValue.html">Exiv2::LangAltValue</a> are
|
|
|
|
provided to simplify the use of XMP properties.
|
|
|
|
|
|
|
|
Note: Unlike Exif and IPTC tags, XMP properties do not have
|
|
|
|
a tag number.
|
|
|
|
|
|
|
|
<h2><a href="examples.html">Examples</a></h2>
|
|
|
|
|
|
|
|
<p>There are several simple examples that demonstrate the basic use of Exiv2
|
|
|
|
functionality: <a href="exifprint_8cpp-example.html">Exifprint</a>
|
|
|
|
shows how the Exif data of an image can be read and written to the screen.
|
|
|
|
<a href="iptcprint_8cpp-example.html">Iptcprint</a> is a similar
|
|
|
|
example to print IPTC data.
|
|
|
|
<a href="addmoddel_8cpp-example.html">Addmoddel</a> shows how to
|
|
|
|
add, modify and delete Exif metadata.
|
|
|
|
<a href="exifcomment_8cpp-example.html">Exifcomment</a> shows how to
|
|
|
|
set the exif comment of an image.
|
|
|
|
<a href="xmpsample_8cpp-example.html">Xmpsample.cpp</a> contains examples
|
|
|
|
of how to set various types of XMP properties.<br>
|
|
|
|
For more real-world code have a look at the implementation of the
|
|
|
|
different actions of the Exiv2 utility (actions.cpp).</p>
|
|
|
|
|
|
|
|
<h2><a href="makernote.html">Makernotes</a></h2>
|
|
|
|
|
|
|
|
<p>Exif Makernote data can be accessed through ExifData in the same
|
|
|
|
way as the standard Exif tags. In other words, for each entry of a
|
|
|
|
known Makernote, there is a corresponding Metadatum in the ExifData
|
|
|
|
container. The abstract base class
|
|
|
|
<a class="el" href="classExiv2_1_1MakerNote.html">Exiv2::MakerNote</a> defines
|
|
|
|
the Makernote interface. Subclass
|
|
|
|
<a class="el" href="classExiv2_1_1IfdMakerNote.html">Exiv2::IfdMakerNote</a>
|
|
|
|
models makernotes encoded in IFD format.
|
|
|
|
<a href="classExiv2_1_1MakerNote.html#_details">Implementing a new
|
|
|
|
IFD makernote</a> is straightforward. Implementing a new makernote that is not
|
|
|
|
encoded in IFD format however, is more difficult. Please
|
|
|
|
<a href="mailto:ahuggel@gmx.net"> contact me</a> if you have such a
|
|
|
|
makernote specification and would like assistance adding it to Exiv2.</p>
|
|
|
|
|
|
|
|
<h2><a class="anchor">IFD (Image File Directory)</a></h2>
|
|
|
|
|
|
|
|
<p><a class="el" href="classExiv2_1_1Ifd.html">Exiv2::Ifd</a> is a generic
|
|
|
|
low-level class that models an image file directory as defined by TIFF
|
|
|
|
and used in the Exif standard. Exiv2::Ifd could be used to implement
|
|
|
|
read only as well as read/write access to Exif (or TIFF) data without
|
|
|
|
the overhead (and convenience) of Exiv2::ExifData.</p>
|
|
|
|
|
|
|
|
<h2><a class="anchor">Components</a></h2>
|
|
|
|
|
|
|
|
<p>The picture below shows the components that make up the Exiv2
|
|
|
|
library and how they depend on each other. Component names are the
|
|
|
|
same as the basenames of their source files. Each component has its
|
|
|
|
own header and source files.</p>
|
|
|
|
|
|
|
|
<center>
|
|
|
|
<h3><a class="anchor">Exiv2 Components Diagram</a></h3>
|
|
|
|
<p><img src="../include/exiv2-components.png" width="660" height="543" alt="Exiv2 components diagram"></p>
|
|
|
|
</center>
|
|
|
|
<p> </p>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
<!-- closes content -->
|
|
|
|
|
|
|
|
</body>
|
|
|
|
</html>
|