summaryrefslogtreecommitdiff
path: root/src/jpeg-utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/jpeg-utils.cpp')
-rw-r--r--src/jpeg-utils.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/jpeg-utils.cpp b/src/jpeg-utils.cpp
index 031ecc0..389b8e4 100644
--- a/src/jpeg-utils.cpp
+++ b/src/jpeg-utils.cpp
@@ -197,6 +197,41 @@ get_exif_data_fixed (ExifData *exif, const gchar *key)
return get_exif_data (exif, key);
}
+/*
+ * Returns TRUE if the image contains the key specified
+ */
+gboolean
+exif_has_key (ExifData *exif, const gchar *key)
+{
+ g_return_val_if_fail (exif != NULL, FALSE);
+ g_return_val_if_fail (key != NULL, FALSE);
+
+ try {
+ if (g_strcmp0 (key, JPEG_COMMENT) == 0) {
+ return (! exif->image->comment().empty());
+ }
+
+ if (g_str_has_prefix (key, "Exif.")) {
+ Exiv2::ExifData &exifData = exif->image->exifData();
+ if (! exifData.empty()) {
+ return (! exifData[key].toString().empty());
+ }
+ }
+
+ if (g_str_has_prefix (key, "Iptc.")) {
+ Exiv2::IptcData &iptcData = exif->image->iptcData();
+ if (! iptcData.empty()) {
+ return (! iptcData[key].toString().empty());
+ }
+ }
+
+ return FALSE;
+ }
+ catch (...) {
+ return FALSE;
+ }
+}
+
static void
autorotate_image (MagickWand *magick_wand)