diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/jpeg-utils.cpp | 43 |
1 files changed, 17 insertions, 26 deletions
diff --git a/src/jpeg-utils.cpp b/src/jpeg-utils.cpp index d68bf59..bee9562 100644 --- a/src/jpeg-utils.cpp +++ b/src/jpeg-utils.cpp @@ -135,18 +135,18 @@ get_exif_data_fixed (ExifData *exif, const gchar *key) try { - if (g_str_has_prefix (key, EXIF_APERTURE)) { + if (g_str_has_prefix (key, "Exif.")) { Exiv2::ExifData &exifData = exif->image->exifData(); - if (! exifData.empty()) { + if (exifData.empty()) + return NULL; + + if (g_str_equal (key, EXIF_APERTURE)) { float val = exifData["Exif.Photo.FNumber"].toFloat(); if (val >= 0) return g_strdup_printf ("f/%.1f", val); } - } - if (g_str_has_prefix (key, EXIF_DATETIME)) { - Exiv2::ExifData &exifData = exif->image->exifData(); - if (! exifData.empty()) { + if (g_str_equal (key, EXIF_DATETIME)) { const char *val = NULL; try { val = exifData["Exif.Photo.DateTimeOriginal"].toString().c_str(); @@ -173,11 +173,8 @@ get_exif_data_fixed (ExifData *exif, const gchar *key) } } } - } - if (g_str_has_prefix (key, EXIF_EXPOSURE)) { - Exiv2::ExifData &exifData = exif->image->exifData(); - if (! exifData.empty()) { + if (g_str_equal (key, EXIF_EXPOSURE)) { float val = exifData["Exif.Photo.ExposureTime"].toFloat(); if (val > 0) { if (val < 0.5) @@ -186,40 +183,28 @@ get_exif_data_fixed (ExifData *exif, const gchar *key) return g_strdup_printf ("%.1f s", val); } } - } - if (g_str_has_prefix (key, EXIF_FLASH)) { - Exiv2::ExifData &exifData = exif->image->exifData(); - if (! exifData.empty()) { + if (g_str_equal (key, EXIF_FLASH)) { long int val = exifData["Exif.Photo.Flash"].toLong(); if (val > 0 && (val & 1) == 1) return g_strdup ("Flash fired"); else return g_strdup ("--"); } - } - if (g_str_has_prefix (key, EXIF_FOCAL_LENGTH)) { - Exiv2::ExifData &exifData = exif->image->exifData(); - if (! exifData.empty()) { + if (g_str_equal (key, EXIF_FOCAL_LENGTH)) { float val = exifData["Exif.Photo.FocalLength"].toFloat(); if (val >= 0) return g_strdup_printf ("%.0f mm", val); } - } - if (g_str_has_prefix (key, EXIF_ISO)) { - Exiv2::ExifData &exifData = exif->image->exifData(); - if (! exifData.empty()) { + if (g_str_equal (key, EXIF_ISO)) { long int val = exifData["Exif.Photo.ISOSpeedRatings"].toLong(); if (val > 0) return g_strdup_printf ("%ld", val); } - } - if (g_str_has_prefix (key, EXIF_CANON_CAMERA_TEMP)) { - Exiv2::ExifData &exifData = exif->image->exifData(); - if (! exifData.empty()) { + if (g_str_equal (key, EXIF_CANON_CAMERA_TEMP)) { if (exifData["Exif.CanonSi.0x000c"].count() > 0) { int long val = exifData["Exif.CanonSi.0x000c"].toLong(); if (val > 0) @@ -227,6 +212,12 @@ get_exif_data_fixed (ExifData *exif, const gchar *key) } } } + + if (g_str_has_prefix (key, "Iptc.")) { + Exiv2::IptcData &iptcData = exif->image->iptcData(); + if (iptcData.empty()) + return NULL; + } } catch (...) { return NULL; |
