[Digikam-devel] extragear/graphics/digikam/libs/dmetadata/loaders

Gilles Caulier caulier.gilles at free.fr
Mon May 29 13:39:52 BST 2006


SVN commit 546183 by cgilles:

digikam from trunk : DMetadata::PNGMetaLoader : backport cameragui method to get Exif metadata from APP1 byte array generated by ImageMagick into a raw text profile. This way is more generic and work fine with Exif raw profile.
CCMAIL: digikam-devel at kde.org

 M  +16 -2     pngmetaloader.cpp  


--- trunk/extragear/graphics/digikam/libs/dmetadata/loaders/pngmetaloader.cpp #546182:546183
@@ -88,8 +88,22 @@
                     uchar *data = readRawProfile(s.ascii(), &length);
                     if (!data)
                         continue;
-                    // We removing standard Exif header
-                    exifMetadata().load((const Exiv2::byte*)data+6, length-6);
+                    
+                    char exifHeader[] = { 0x45, 0x78, 0x69, 0x66, 0x00, 0x00 };
+                    QByteArray exifData(length);
+                    memcpy(exifData.data(), data, length);
+                    
+                    if (!exifData.isEmpty())
+                    {                    
+                        int i = exifData.find(*exifHeader);
+                        if (i != -1)
+                        {
+                            kdDebug() << filePath << " : Exif header found at position " << i << endl;
+                            i = i + sizeof(exifHeader);
+                            exifMetadata().load((const Exiv2::byte*)data+i, exifData.size()-i);
+                        }
+                    }
+                    
                     delete [] data;
                     
                     if (!exifMetadata().empty())



More information about the Digikam-devel mailing list