exifvalue.cpp

Prints the value of a single Exif tag in a file

// SPDX-License-Identifier: GPL-2.0-or-later
// Sample program to print value of an exif key in an image
#include <exiv2/exiv2.hpp>
#include <iostream>
int main(int argc, char* const argv[]) {
#ifdef EXV_ENABLE_BMFF
Exiv2::enableBMFF();
#endif
if (argc != 3) {
std::cerr << "Usage: " << argv[0] << " file key\n";
return EXIT_FAILURE;
}
const char* file = argv[1];
const char* key = argv[2];
auto image = Exiv2::ImageFactory::open(file);
image->readMetadata();
Exiv2::ExifData& exifData = image->exifData();
if (exifData.empty()) {
std::cerr << "no metadata found in file " << file << std::endl;
return EXIT_FAILURE;
}
try {
std::cout << exifData[key] << std::endl;
} catch (Exiv2::Error& e) {
std::cerr << "Caught Exiv2 exception '" << e << "'" << std::endl;
return EXIT_FAILURE;
} catch (...) {
std::cerr << "Caught a cold!" << std::endl;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
static bool initialize(XmpParser::XmpLockFct xmpLockFct=nullptr, void *pLockData=nullptr)
Initialize the XMP Toolkit.
static Image::UniquePtr open(const std::string &path, bool useCurl=true)
Create an Image subclass of the appropriate type by reading the specified file. Image type is derived...
Simple error class used for exceptions. An output operator is provided to print errors to a stream.
Definition: error.hpp:235
static void terminate()
Terminate the XMP Toolkit and unregister custom namespaces.
bool empty() const
Return true if there is no Exif metadata.
Definition: exif.hpp:459
A container for Exif data. This is a top-level class of the Exiv2 library. The container holds Exifda...
Definition: exif.hpp:373