[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