From f4df28cf49de7e354d3e6238ada1c2a9d7f03136 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Sun, 16 Oct 2022 02:29:52 +0300 Subject: [PATCH] kutils: map Iptc and Xmp data from KExiv2::data() Signed-off-by: Ivailo Monev --- kutils/kexiv2/kexiv2.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/kutils/kexiv2/kexiv2.cpp b/kutils/kexiv2/kexiv2.cpp index 9ffd81d1..b3d0fda8 100644 --- a/kutils/kexiv2/kexiv2.cpp +++ b/kutils/kexiv2/kexiv2.cpp @@ -194,7 +194,7 @@ KExiv2::DataMap KExiv2::data() const #if defined(HAVE_EXIV2) if (d->m_exiv2image.get()) { try { - kDebug() << "Mapping EXIF data for" << d->m_path; + kDebug() << "Mapping Exif data for" << d->m_path; const Exiv2::ExifData exiv2data = d->m_exiv2image->exifData(); for (Exiv2::ExifData::const_iterator it = exiv2data.begin(); it != exiv2data.end(); it++) { const std::string key = (*it).key(); @@ -202,6 +202,24 @@ KExiv2::DataMap KExiv2::data() const kDebug() << "Key" << key.c_str() << "value" << value.c_str(); result.insert(QByteArray(key.c_str(), key.size()), QString::fromStdString(value)); } + + kDebug() << "Mapping Iptc data for" << d->m_path; + const Exiv2::IptcData iptcdata = d->m_exiv2image->iptcData(); + for (Exiv2::IptcData::const_iterator it = iptcdata.begin(); it != iptcdata.end(); it++) { + const std::string key = (*it).key(); + const std::string value = (*it).value().toString(); + kDebug() << "Key" << key.c_str() << "value" << value.c_str(); + result.insert(QByteArray(key.c_str(), key.size()), QString::fromStdString(value)); + } + + kDebug() << "Mapping Xmp data for" << d->m_path; + const Exiv2::XmpData xmpdata = d->m_exiv2image->xmpData(); + for (Exiv2::XmpData::const_iterator it = xmpdata.begin(); it != xmpdata.end(); it++) { + const std::string key = (*it).key(); + const std::string value = (*it).value().toString(); + kDebug() << "Key" << key.c_str() << "value" << value.c_str(); + result.insert(QByteArray(key.c_str(), key.size()), QString::fromStdString(value)); + } } catch(Exiv2::Error &err) { kWarning() << err.what() << err.code(); } catch(std::exception &err) {