summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/jpeg-utils.cpp43
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;