You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
3.0 KiB
Plaintext
51 lines
3.0 KiB
Plaintext
12 years ago
|
<div class="fragment"><pre><span class="comment">// ***************************************************************** -*- C++ -*-</span>
|
||
|
<span class="comment">// iptceasy.cpp, $Rev: 2286 $</span>
|
||
|
<span class="comment">// The quickest way to access, set or modify IPTC metadata.</span>
|
||
|
|
||
|
<span class="preprocessor">#include <exiv2/exiv2.hpp></span>
|
||
|
<span class="preprocessor">#include <iostream></span>
|
||
|
<span class="preprocessor">#include <iomanip></span>
|
||
|
<span class="preprocessor">#include <cassert></span>
|
||
|
|
||
|
<span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* <span class="keyword">const</span> argv[])
|
||
|
<span class="keyword">try</span> {
|
||
|
<span class="keywordflow">if</span> (argc != 2) {
|
||
|
std::cout << <span class="stringliteral">"Usage: "</span> << argv[0] << <span class="stringliteral">" file\n"</span>;
|
||
|
<span class="keywordflow">return</span> 1;
|
||
|
}
|
||
|
std::string file(argv[1]);
|
||
|
|
||
|
Exiv2::IptcData iptcData;
|
||
|
|
||
|
iptcData[<span class="stringliteral">"Iptc.Application2.Headline"</span>] = <span class="stringliteral">"The headline I am"</span>;
|
||
|
iptcData[<span class="stringliteral">"Iptc.Application2.Keywords"</span>] = <span class="stringliteral">"Yet another keyword"</span>;
|
||
|
iptcData[<span class="stringliteral">"Iptc.Application2.DateCreated"</span>] = <span class="stringliteral">"2004-8-3"</span>;
|
||
|
iptcData[<span class="stringliteral">"Iptc.Application2.Urgency"</span>] = uint16_t(1);
|
||
|
iptcData[<span class="stringliteral">"Iptc.Envelope.ModelVersion"</span>] = 42;
|
||
|
iptcData[<span class="stringliteral">"Iptc.Envelope.TimeSent"</span>] = <span class="stringliteral">"14:41:0-05:00"</span>;
|
||
|
iptcData[<span class="stringliteral">"Iptc.Application2.RasterizedCaption"</span>] = <span class="stringliteral">"230 42 34 2 90 84 23 146"</span>;
|
||
|
iptcData[<span class="stringliteral">"Iptc.0x0009.0x0001"</span>] = <span class="stringliteral">"Who am I?"</span>;
|
||
|
|
||
|
Exiv2::StringValue value;
|
||
|
value.read(<span class="stringliteral">"very!"</span>);
|
||
|
iptcData[<span class="stringliteral">"Iptc.Application2.Urgency"</span>] = value;
|
||
|
|
||
|
std::cout << <span class="stringliteral">"Time sent: "</span> << iptcData[<span class="stringliteral">"Iptc.Envelope.TimeSent"</span>] << <span class="stringliteral">"\n"</span>;
|
||
|
|
||
|
<span class="comment">// Open image file</span>
|
||
|
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file);
|
||
|
assert (image.get() != 0);
|
||
|
|
||
|
<span class="comment">// Set IPTC data and write it to the file</span>
|
||
|
image->setIptcData(iptcData);
|
||
|
image->writeMetadata();
|
||
|
|
||
|
<span class="keywordflow">return</span> 0;
|
||
|
}
|
||
|
<span class="keywordflow">catch</span> (Exiv2::AnyError& e) {
|
||
|
std::cout << <span class="stringliteral">"Caught Exiv2 exception '"</span> << e << <span class="stringliteral">"'\n"</span>;
|
||
|
<span class="keywordflow">return</span> -1;
|
||
|
}
|
||
|
</pre></div>
|
||
|
|