diff --git a/src/write2-test.cpp b/src/write2-test.cpp index c271462b..46e81691 100644 --- a/src/write2-test.cpp +++ b/src/write2-test.cpp @@ -29,11 +29,28 @@ try { } std::string file(argv[1]); - std::cout <<"----- One IFD0 tag\n"; + std::cout <<"----- Two IFD0 tags\n"; Exiv2::ExifData ed1; Exiv2::Exifdatum md1(Exiv2::ExifKey("Exif.Image.Model")); md1.setValue("Test 1"); ed1.add(md1); + + Exiv2::Value::AutoPtr v1 = Exiv2::Value::create(Exiv2::unsignedShort); + v1->read("160 161 162 163"); + ed1.add(Exiv2::ExifKey("Exif.Image.SamplesPerPixel"), v1.get()); + + Exiv2::Value::AutoPtr v2 = Exiv2::Value::create(Exiv2::signedLong); + v2->read("-2 -1 0 1"); + ed1.add(Exiv2::ExifKey("Exif.Image.XResolution"), v2.get()); + + Exiv2::Value::AutoPtr v3 = Exiv2::Value::create(Exiv2::signedRational); + v3->read("-2/3 -1/3 0/3 1/3"); + ed1.add(Exiv2::ExifKey("Exif.Image.YResolution"), v3.get()); + + Exiv2::Value::AutoPtr v4 = Exiv2::Value::create(Exiv2::undefined); + v4->read("255 254 253 252"); + ed1.add(Exiv2::ExifKey("Exif.Image.WhitePoint"), v4.get()); + write(file, ed1); print(file); @@ -187,13 +204,19 @@ void print(const std::string& file) Exiv2::ExifData::const_iterator end = ed.end(); for (Exiv2::ExifData::const_iterator i = ed.begin(); i != end; ++i) { - std::cout << std::setw(53) << std::setfill(' ') << std::left + std::cout << std::setw(45) << std::setfill(' ') << std::left << i->key() << " " + << "0x" << std::setw(4) << std::setfill('0') << std::right + << std::hex << i->tag() << " " << std::setw(12) << std::setfill(' ') << std::left << i->ifdName() << " " - << "0x" << std::setw(4) << std::setfill('0') << std::right - << std::hex << i->tag() << " " + << std::setw(9) << std::setfill(' ') << std::left + << i->typeName() << " " + << std::dec << std::setw(3) + << std::setfill(' ') << std::right + << i->count() << " " << std::dec << i->value() << "\n"; + } } diff --git a/src/write2-test.out b/src/write2-test.out index 261b4f8d..f5e24099 100644 --- a/src/write2-test.out +++ b/src/write2-test.out @@ -1,18 +1,58 @@ ------ One IFD0 tag -Exif.Image.Model IFD0 0x0110 Test 1 +----- Two IFD0 tags +Exif.Image.Model 0x0110 IFD0 Ascii 7 Test 1 +Exif.Image.SamplesPerPixel 0x0115 IFD0 Short 4 160 161 162 163 +Exif.Image.XResolution 0x011a IFD0 SLong 4 -2 -1 0 1 +Exif.Image.YResolution 0x011b IFD0 SRational 4 -2/3 -1/3 0/3 1/3 +Exif.Image.WhitePoint 0x013e IFD0 Undefined 4 255 254 253 252 ----- One Exif tag -Exif.Image.ExifTag IFD0 0x8769 26 -Exif.Photo.DateTimeOriginal Exif 0x9003 Test 2 +Exif.Image.ExifTag 0x8769 IFD0 Long 1 26 +Exif.Photo.DateTimeOriginal 0x9003 Exif Ascii 7 Test 2 + +----- One Canon MakerNote tag +Exif.Image.Make 0x010f IFD0 Ascii 6 Canon +Exif.Image.Model 0x0110 IFD0 Ascii 20 Canon PowerShot S40 +Exif.Image.ExifTag 0x8769 IFD0 Long 1 76 +Exif.Canon.0xabcd 0xabcd Makernote Ascii 22 A Canon makernote tag + +----- One Fujifilm MakerNote tag +Exif.Image.Make 0x010f IFD0 Ascii 9 FUJIFILM +Exif.Image.Model 0x0110 IFD0 Ascii 13 FinePixS2Pro +Exif.Image.ExifTag 0x8769 IFD0 Long 1 72 +Exif.Fujifilm.Quality 0x1000 Makernote Ascii 23 A Fujifilm QUALITY tag + +----- One Sigma/Foveon MakerNote tag +Exif.Image.Make 0x010f IFD0 Ascii 6 SIGMA +Exif.Image.Model 0x0110 IFD0 Ascii 11 SIGMA SD10 +Exif.Image.ExifTag 0x8769 IFD0 Long 1 67 +Exif.Sigma.Software 0x0018 Makernote Ascii 17 Software? Exiv2! + +----- One Nikon1 MakerNote tag +Exif.Image.Make 0x010f IFD0 Ascii 6 NIKON +Exif.Image.Model 0x0110 IFD0 Ascii 5 E990 +Exif.Image.ExifTag 0x8769 IFD0 Long 1 61 +Exif.Nikon1.ImageAdjustment 0x0080 Makernote Ascii 25 ImageAdjustment by Exiv2 + +----- One Nikon2 MakerNote tag +Exif.Image.Make 0x010f IFD0 Ascii 6 NIKON +Exif.Image.Model 0x0110 IFD0 Ascii 5 E950 +Exif.Image.ExifTag 0x8769 IFD0 Long 1 61 +Exif.Nikon2.0xffff 0xffff Makernote Ascii 22 An obscure Nikon2 tag + +----- One Nikon3 MakerNote tag +Exif.Image.Make 0x010f IFD0 Ascii 18 NIKON CORPORATION +Exif.Image.Model 0x0110 IFD0 Ascii 10 NIKON D70 +Exif.Image.ExifTag 0x8769 IFD0 Long 1 78 +Exif.Nikon3.Quality 0x0004 Makernote Ascii 28 A boring Nikon3 Quality tag ----- One IOP tag -Exif.Image.ExifTag IFD0 0x8769 26 -Exif.Photo.InteroperabilityTag Exif 0xa005 44 -Exif.Iop.InteroperabilityVersion Iop 0x0002 Test 3 +Exif.Image.ExifTag 0x8769 IFD0 Long 1 26 +Exif.Photo.InteroperabilityTag 0xa005 Exif Long 1 44 +Exif.Iop.InteroperabilityVersion 0x0002 Iop Ascii 7 Test 3 ----- One GPS tag -Exif.Image.GPSTag IFD0 0x8825 26 -Exif.GPSInfo.GPSVersionID GPSInfo 0x0000 Test 4 +Exif.Image.GPSTag 0x8825 IFD0 Long 1 26 +Exif.GPSInfo.GPSVersionID 0x0000 GPSInfo Ascii 7 Test 4 ----- One IFD1 tag -Exif.Image.Model IFD0 0x0110 Test 5 (Fix me!) +Exif.Image.Model 0x0110 IFD0 Ascii 17 Test 5 (Fix me!)