exifcomment.cpp

Sample program showing how to set the Exif comment of an image.

00001 // ***************************************************************** -*- C++ -*-
00002 /*
00003   Abstract : Sample program showing how to set the Exif comment of an image,
00004              Exif.Photo.UserComment
00005 
00006   File:      exifcomment.cpp
00007   Version  : $Rev: 1271 $
00008   Author(s): Andreas Huggel (ahu) <ahuggel@gmx.net>
00009   History  : 10-May-04, ahu: created
00010              16-Jan-05, ahu: updated using CommentValue and operator trickery
00011  */
00012 // *****************************************************************************
00013 // included header files
00014 #include <exiv2/image.hpp>
00015 #include <exiv2/exif.hpp>
00016 #include <iostream>
00017 #include <cassert>
00018 
00019 // *****************************************************************************
00020 // Main
00021 int main(int argc, char* const argv[])
00022 try {
00023 
00024     if (argc != 2) {
00025         std::cout << "Usage: " << argv[0] << " file\n";
00026         return 1;
00027     }
00028 
00029     Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(argv[1]);
00030     assert (image.get() != 0);
00031     image->readMetadata();
00032     Exiv2::ExifData &exifData = image->exifData();
00033 
00034     /*
00035       Exiv2 uses a CommentValue for Exif user comments. The format of the
00036       comment string includes an optional charset specification at the beginning:
00037 
00038       [charset=["]Ascii|Jis|Unicode|Undefined["] ]comment
00039 
00040       Undefined is used as a default if the comment doesn't start with a charset
00041       definition.
00042 
00043       Following are a few examples of valid comments. The last one is written to
00044       the file.
00045      */
00046     exifData["Exif.Photo.UserComment"]
00047         = "charset=\"Unicode\" An Unicode Exif comment added with Exiv2";
00048     exifData["Exif.Photo.UserComment"]
00049         = "charset=\"Undefined\" An undefined Exif comment added with Exiv2";
00050     exifData["Exif.Photo.UserComment"]
00051         = "Another undefined Exif comment added with Exiv2";
00052     exifData["Exif.Photo.UserComment"]
00053         = "charset=Ascii An ASCII Exif comment added with Exiv2";
00054 
00055     std::cout << "Writing user comment '"
00056               << exifData["Exif.Photo.UserComment"]
00057               << "' back to the image\n";
00058 
00059     image->writeMetadata();
00060 
00061     return 0;
00062 }
00063 catch (Exiv2::AnyError& e) {
00064     std::cout << "Caught Exiv2 exception '" << e << "'\n";
00065     return -1;
00066 }

Generated on Sun Jun 22 12:55:39 2008 for Exiv2 by  doxygen 1.4.7