[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: extragear/libs/libkexif
From: Renchi Raju <renchi () pooh ! tam ! uiuc ! edu>
Date: 2005-07-18 20:42:01
Message-ID: 1121719321.279510.25049.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 436000 by pahlibar:
if the datetime exif tag is bogus, try datetime_original
and datetime_digitized in turn.
CCMAIL: Klaus.Weidenbach@gmx.net
M +49 -3 kexifdata.cpp
--- trunk/extragear/libs/libkexif/kexifdata.cpp #435999:436000
@@ -215,9 +215,9 @@
{
if (d->exifData) {
//retrieve Ifd0
- ExifContent *ifd0=d->exifData->ifd[EXIF_IFD_0];
+ ExifContent *ifd=d->exifData->ifd[EXIF_IFD_0];
//look for entry in ifd0
- ExifEntry *entry=exif_content_get_entry(ifd0, EXIF_TAG_DATE_TIME);
+ ExifEntry *entry=exif_content_get_entry(ifd, EXIF_TAG_DATE_TIME);
if (entry)
{
@@ -230,8 +230,54 @@
#else
QString str(exif_entry_get_value(entry));
#endif
- return QDateTime::fromString(str,Qt::ISODate);
+ QDateTime datetime = QDateTime::fromString(str,Qt::ISODate);
+ if (datetime.isValid())
+ return datetime;
}
+
+ // bogus datetime entry. try datetime original/digitized
+
+ //retrieve ifd_exif
+ ifd=d->exifData->ifd[EXIF_IFD_EXIF];
+
+ // look for datetime original
+ entry=exif_content_get_entry(ifd, EXIF_TAG_DATE_TIME_ORIGINAL);
+
+ if (entry)
+ {
+#ifdef HAVE_EXIF06
+ char val[1024];
+ exif_entry_get_value(entry, val, 1023);
+ // just in case we don't get a null-terminated string
+ val[1024] = '\0';
+ QString str((const char*)&val);
+#else
+ QString str(exif_entry_get_value(entry));
+#endif
+ QDateTime datetime = QDateTime::fromString(str,Qt::ISODate);
+ if (datetime.isValid())
+ return datetime;
+ }
+
+ // look for datetime digitized
+ entry=exif_content_get_entry(ifd, EXIF_TAG_DATE_TIME_DIGITIZED);
+
+ if (entry)
+ {
+#ifdef HAVE_EXIF06
+ char val[1024];
+ exif_entry_get_value(entry, val, 1023);
+ // just in case we don't get a null-terminated string
+ val[1024] = '\0';
+ QString str((const char*)&val);
+#else
+ QString str(exif_entry_get_value(entry));
+#endif
+ QDateTime datetime = QDateTime::fromString(str,Qt::ISODate);
+ if (datetime.isValid())
+ return datetime;
+ }
+
}
return QDateTime();
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic