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.
exiv2/src/tiffmn-test.cpp

213 lines
6.1 KiB
C++

// ***************************************************************** -*- C++ -*-
// tiffmn-test.cpp, $Rev$
// Makernote TIFF writer tests.
#include "tiffimage.hpp"
#include "exif.hpp"
#include "error.hpp"
#include <string>
#include <iostream>
#include <iomanip>
using namespace Exiv2;
void canonmn(const std::string& path);
void fujimn(const std::string& path);
void minoltamn(const std::string& path);
void nikon1mn(const std::string& path);
void nikon2mn(const std::string& path);
void nikon3mn(const std::string& path);
void olympusmn(const std::string& path);
void panasonicmn(const std::string& path);
void sigmamn(const std::string& path);
void sony1mn(const std::string& path);
void sony2mn(const std::string& path);
void print(const ExifData& exifData);
int main()
try {
canonmn("exiv2-canonmn.tif");
fujimn("exiv2-fujimn.tif");
minoltamn("exiv2-minoltamn.tif");
nikon1mn("exiv2-nikon1mn.tif");
nikon2mn("exiv2-nikon2mn.tif");
nikon3mn("exiv2-nikon3mn.tif");
olympusmn("exiv2-olympusmn.tif");
panasonicmn("exiv2-panasonicmn.tif");
sigmamn("exiv2-sigmamn.tif");
sony1mn("exiv2-sony1mn.tif");
sony2mn("exiv2-sony2mn.tif");
return 0;
}
catch (const Error& e) {
std::cout << e << "\n";
}
void canonmn(const std::string& path)
{
TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false);
ExifData& exifData = tiffImage.exifData();
exifData["Exif.Image.Make"] = "Canon";
exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon";
exifData["Exif.Canon.OwnerName"] = "Camera Owner";
print(exifData);
tiffImage.writeMetadata();
}
void fujimn(const std::string& path)
{
TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false);
ExifData& exifData = tiffImage.exifData();
exifData["Exif.Image.Make"] = "FUJIFILM";
exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon";
exifData["Exif.Fujifilm.Quality"] = "Very good";
print(exifData);
tiffImage.writeMetadata();
}
void minoltamn(const std::string& path)
{
TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false);
ExifData& exifData = tiffImage.exifData();
exifData["Exif.Image.Make"] = "Minolta";
exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon";
exifData["Exif.Minolta.Quality"] = uint32_t(42);
print(exifData);
tiffImage.writeMetadata();
}
void nikon1mn(const std::string& path)
{
TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false);
ExifData& exifData = tiffImage.exifData();
exifData["Exif.Image.Make"] = "NIKON";
exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon";
exifData["Exif.Nikon1.Quality"] = "Excellent";
print(exifData);
tiffImage.writeMetadata();
}
void nikon2mn(const std::string& path)
{
TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false);
ExifData& exifData = tiffImage.exifData();
exifData["Exif.Image.Make"] = "NIKON";
exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon";
exifData["Exif.Nikon2.Quality"] = uint16_t(42);
print(exifData);
tiffImage.writeMetadata();
}
void nikon3mn(const std::string& path)
{
TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false);
ExifData& exifData = tiffImage.exifData();
exifData["Exif.Image.Make"] = "NIKON";
exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon";
exifData["Exif.Nikon3.Quality"] = "Nikon3 quality";
print(exifData);
tiffImage.writeMetadata();
}
void olympusmn(const std::string& path)
{
TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false);
ExifData& exifData = tiffImage.exifData();
exifData["Exif.Image.Make"] = "OLYMPUS";
exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon";
exifData["Exif.Olympus.Quality"] = uint16_t(42);
print(exifData);
tiffImage.writeMetadata();
}
void panasonicmn(const std::string& path)
{
TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false);
ExifData& exifData = tiffImage.exifData();
exifData["Exif.Image.Make"] = "Panasonic";
exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon";
exifData["Exif.Panasonic.Quality"] = uint16_t(42);
print(exifData);
tiffImage.writeMetadata();
}
void sigmamn(const std::string& path)
{
TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false);
ExifData& exifData = tiffImage.exifData();
exifData["Exif.Image.Make"] = "SIGMA";
exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon";
exifData["Exif.Sigma.Quality"] = "Sigma quality";
print(exifData);
tiffImage.writeMetadata();
}
void sony1mn(const std::string& path)
{
TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false);
ExifData& exifData = tiffImage.exifData();
exifData["Exif.Image.Make"] = "SONY";
exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon";
exifData["Exif.Sony.0x2000"] = uint16_t(42);
print(exifData);
tiffImage.writeMetadata();
}
void sony2mn(const std::string& path)
{
TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false);
ExifData& exifData = tiffImage.exifData();
exifData["Exif.Image.Make"] = "SONY";
exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon";
exifData["Exif.Sony.0x2001"] = uint16_t(43);
print(exifData);
tiffImage.writeMetadata();
}
void print(const ExifData& exifData)
{
if (exifData.empty()) {
std::string error("No Exif data found in the file");
throw Exiv2::Error(1, error);
}
Exiv2::ExifData::const_iterator end = exifData.end();
for (Exiv2::ExifData::const_iterator i = exifData.begin(); i != end; ++i) {
std::cout << std::setw(44) << std::setfill(' ') << std::left
<< i->key() << " "
<< "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";
}
}