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: 631 $ 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 "image.hpp" 00015 #include "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 }