__doctype__
<html lang="en">
__header4__

<body>
__navbar__

<div class="container">
  <div class="page-header">
    <h1>Library examples</h1>
  </div>

  <h2 id="example1">Example 1: exifprint.cpp</h2>

<p class="lead">This is a very simple program to read and print the Exif metadata
of an image. Go to <a title="Sample usage of high-level metadata operations" 
href="#example2-output">Example2</a> to see how the
output looks like.</p>

__example1__

<p>&nbsp;</p>
<hr>
<h2 id="example2">Example 2: addmoddel.cpp</h2>

<p class="lead">Sample usage of high-level Exiv2 library calls to add, modify and delete Exif metadata.</p>

__example2__

<p>&nbsp;</p>
<div class="row">
  <div class="col-md-8">
    <p id="example2-output">Using the print function from 
      <a title="Reading and printing the Exif metadata of an image" 
	 href="#example1">Example1</a> shows the
      following Exif tags in the image. Note the tag
      <code>Exif.Image.ExifTag</code>: It is required by the Exif standard because
      the metadata contains an <code>Exif.Photo.*</code> tag and is automatically
      added by Exiv2 to ensure that the Exif structure is valid.</p>

    <pre>
<span class="stringliteral">$ exifprint img_2158.jpg</span>
Exif.Image.Model                  0x0110 Ascii       7  Test 1
Exif.Image.SamplesPerPixel        0x0115 Short       1  162
Exif.Image.XResolution            0x011a SLong       1  -2
Exif.Image.YResolution            0x011b SRational   1  -2/3
Exif.Image.ExifTag                0x8769 Long        1  89
Exif.Photo.DateTimeOriginal       0x9003 Ascii      20  2000:12:31 23:59:59
    </pre>

  </div><!-- /.col-md-8 -->
  <div class="col-md-4">
    <img src="include/img_2158.jpg" class="img-responsive img-rounded center-block" title="img_2158.jpg (28036 Bytes)" alt="Image containing the Exif metadata from example 2">
    <p class="text-center text-muted"><em>Image with the Exif metadata from example 2</em></p>
  </div><!-- /.col-md-4 -->
</div><!-- /.row -->

<hr>
<h2 id="example3">Example 3: iptcprint.cpp</h2>

<p class="lead">This is a very simple program to read and print the IPTC metadata of an image.</p>

__example3__

<p>&nbsp;</p>
<div class="row">
  <div class="col-md-9">
    <pre>
<span class="stringliteral">$ iptcprint smiley1.jpg</span>
Iptc.Application2.Headline              0x0069 String     17  The headline I am
Iptc.Application2.Keywords              0x0019 String     19  Yet another keyword
Iptc.Application2.DateCreated           0x0037 Date        8  2004-08-03
Iptc.Application2.Urgency               0x000a String      5  very!
Iptc.Envelope.ModelVersion              0x0000 Short       1  42
Iptc.Envelope.TimeSent                  0x0050 Time       11  14:41:00-05:00
Iptc.Application2.RasterizedCaption     0x007d Undefined   8  230 42 34 2 90 84 23 146
Iptc.0x0009.0x0001                      0x0001 String      9  Who am I?
    </pre>
  </div><!-- /.col-md-9 -->
  <div class="col-md-3">
    <img src="include/smiley1.jpg" id="smiley1" class="img-responsive img-thumbnail center-block" title="smiley1.jpg (2909 Bytes)" alt="Sample image with the IPTC data from example 3">
    <p class="text-center text-muted"><em>Image with the IPTC data<br>from examples 3 &amp; 4</em></p>
  </div><!-- /.col-md-3 -->
</div><!-- /.row -->

<hr>
<h2 id="example4">Example 4: iptceasy.cpp</h2>

<p class="lead">This shows the quickest way to access, set or modify IPTC metadata, which is similar to how <code>std::map</code> works.
The sample program writes the IPTC data to a file. <a title="Reading and printing the IPTC metadata of an image" 
href="#smiley1">Example 3</a>, above, has the image with this IPTC data.</p>

__example4__

<p>&nbsp;</p>
<hr>
<h2 id="example5">Example 5: xmpsample.cpp</h2>

<p class="lead">Sample (test) usage of high level XMP classes. This example shows various aspects
 of setting XMP metadata, including complex types. See also <a href="#example2">Example 2: addmoddel.cpp</a></p>

__example5__

<p>&nbsp;</p>
<p>The resulting XMP Exiv2 metadata and XMP packet is below.
The same can be achieved with a set of <a href="sample.html#xmp">commands</a>
to the Exiv2 command line tool.</p>

<div id="example5-output"><pre>
<span class="stringliteral">$ xmpsample</span>
Xmp.dc.source                                XmpText    13  xmpsample.cpp
Xmp.dc.subject                               XmpBag      2  Palmtree, Rubbertree
Xmp.dc.title                                 LangAlt     2  lang="de-DE" Sonnenuntergang am Strand, lang="en-US" Sunset on the beach
Xmp.dc.one                                   XmpText     2  -1
Xmp.dc.two                                   XmpText     6  3.1415
Xmp.dc.three                                 XmpText     3  5/7
Xmp.dc.four                                  XmpText     3  255
Xmp.dc.five                                  XmpText     3  256
Xmp.dc.six                                   XmpText     5  false
Xmp.dc.seven                                 XmpText     5  Seven
Xmp.dc.format                                XmpText    10  image/jpeg
Xmp.dc.creator                               XmpSeq      3  1) The first creator, 2) The second creator, 3) And another one
Xmp.dc.description                           LangAlt     2  lang="x-default" Hello, World, lang="de-DE" Hallo, Welt
Xmp.tiff.ImageDescription                    LangAlt     2  lang="x-default" TIFF image description, lang="de-DE" TIFF Bildbeschreibung
Xmp.xmpDM.videoFrameSize/stDim:w             XmpText     2  16
Xmp.xmpDM.videoFrameSize/stDim:h             XmpText     1  9
Xmp.xmpDM.videoFrameSize/stDim:unit          XmpText     4  inch
Xmp.dc.publisher                             XmpBag      1  James Bond
Xmp.dc.publisher[1]/?ns:role                 XmpText    12  secret agent
Xmp.dc.creator[2]/?ns:role                   XmpText    10  programmer
Xmp.xmpBJ.JobRef                             XmpText     0  type="Bag"
Xmp.xmpBJ.JobRef[1]/stJob:name               XmpText    14  Birthday party
Xmp.xmpBJ.JobRef[1]/stJob:role               XmpText    12  Photographer
Xmp.xmpBJ.JobRef[2]/stJob:name               XmpText    16  Wedding ceremony
Xmp.xmpBJ.JobRef[2]/stJob:role               XmpText     8  Best man

&lt;?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?&gt;
&lt;x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.1.1-Exiv2"&gt;
 &lt;rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"&gt;
  &lt;rdf:Description rdf:about=""
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:ns="myNamespace/"
    xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
    xmlns:xmpDM="http://ns.adobe.com/xmp/1.0/DynamicMedia/"
    xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
    xmlns:xapBJ="http://ns.adobe.com/xap/1.0/bj/"
    xmlns:stJob="http://ns.adobe.com/xap/1.0/sType/Job#"
   dc:source="xmpsample.cpp"
   dc:one="-1"
   dc:two="3.1415"
   dc:three="5/7"
   dc:four="255"
   dc:five="256"
   dc:six="false"
   dc:seven="Seven"
   dc:format="image/jpeg"&gt;
   &lt;dc:subject&gt;
    &lt;rdf:Bag&gt;
     &lt;rdf:li&gt;Palmtree&lt;/rdf:li&gt;
     &lt;rdf:li&gt;Rubbertree&lt;/rdf:li&gt;
    &lt;/rdf:Bag&gt;
   &lt;/dc:subject&gt;
   &lt;dc:title&gt;
    &lt;rdf:Alt&gt;
     &lt;rdf:li xml:lang="de-DE"&gt;Sonnenuntergang am Strand&lt;/rdf:li&gt;
     &lt;rdf:li xml:lang="en-US"&gt;Sunset on the beach&lt;/rdf:li&gt;
    &lt;/rdf:Alt&gt;
   &lt;/dc:title&gt;
   &lt;dc:creator&gt;
    &lt;rdf:Seq&gt;
     &lt;rdf:li&gt;1) The first creator&lt;/rdf:li&gt;
     &lt;rdf:li rdf:parseType="Resource"&gt;
      &lt;rdf:value&gt;2) The second creator&lt;/rdf:value&gt;
      &lt;ns:role&gt;programmer&lt;/ns:role&gt;
     &lt;/rdf:li&gt;
     &lt;rdf:li&gt;3) And another one&lt;/rdf:li&gt;
    &lt;/rdf:Seq&gt;
   &lt;/dc:creator&gt;
   &lt;dc:description&gt;
    &lt;rdf:Alt&gt;
     &lt;rdf:li xml:lang="x-default"&gt;Hello, World&lt;/rdf:li&gt;
     &lt;rdf:li xml:lang="de-DE"&gt;Hallo, Welt&lt;/rdf:li&gt;
    &lt;/rdf:Alt&gt;
   &lt;/dc:description&gt;
   &lt;dc:publisher&gt;
    &lt;rdf:Bag&gt;
     &lt;rdf:li rdf:parseType="Resource"&gt;
      &lt;rdf:value&gt;James Bond&lt;/rdf:value&gt;
      &lt;ns:role&gt;secret agent&lt;/ns:role&gt;
     &lt;/rdf:li&gt;
    &lt;/rdf:Bag&gt;
   &lt;/dc:publisher&gt;
   &lt;tiff:ImageDescription&gt;
    &lt;rdf:Alt&gt;
     &lt;rdf:li xml:lang="x-default"&gt;TIFF image description&lt;/rdf:li&gt;
     &lt;rdf:li xml:lang="de-DE"&gt;TIFF Bildbeschreibung&lt;/rdf:li&gt;
    &lt;/rdf:Alt&gt;
   &lt;/tiff:ImageDescription&gt;
   &lt;xmpDM:videoFrameSize
    stDim:w="16"
    stDim:h="9"
    stDim:unit="inch"/&gt;
   &lt;xapBJ:JobRef&gt;
    &lt;rdf:Bag&gt;
     &lt;rdf:li
      stJob:name="Birthday party"
      stJob:role="Photographer"/&gt;
     &lt;rdf:li
      stJob:name="Wedding ceremony"
      stJob:role="Best man"/&gt;
    &lt;/rdf:Bag&gt;
   &lt;/xapBJ:JobRef&gt;
  &lt;/rdf:Description&gt;
 &lt;/rdf:RDF&gt;
&lt;/x:xmpmeta&gt;
&lt;?xpacket end="w"?&gt;
</pre></div>

</div><!-- /.container -->
__footer__
__bootstrap__

<!-- Custom script to bootstrap (augment) Doxygen-generated HTML -->
<script type="text/javascript" src="doc/doxy-boot.js"></script>

</body>
</html>
