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[]) {
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;
}
Simple error class used for exceptions. An output operator is provided to print errors to a stream.
Definition: error.hpp:235
A container for Exif data. This is a top-level class of the Exiv2 library. The container holds Exifda...
Definition: exif.hpp:379
bool empty() const
Return true if there is no Exif metadata.
Definition: exif.hpp:465
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...
static void terminate()
Terminate the XMP Toolkit and unregister custom namespaces.
static bool initialize(XmpParser::XmpLockFct xmpLockFct=nullptr, void *pLockData=nullptr)
Initialize the XMP Toolkit.