| Summary: | digiKam-signature in iptc and exif tags | ||
|---|---|---|---|
| Product: | [Applications] digikam | Reporter: | Caspar Maessen <cmaessen> | 
| Component: | Metadata-Exif | Assignee: | Digikam Developers <digikam-bugs-null> | 
| Status: | RESOLVED FIXED | ||
| Severity: | wishlist | CC: | caulier.gilles | 
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | unspecified | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | 7.5.0 | |
| Sentry Crash Report: | |||
| 
 
        
          Description
        
        
          Caspar Maessen
        
        
        
        
          2007-03-05 20:39:57 UTC
        
       
    Agree - Digikam shouldn't overwrite device tag but IMO it is acceptable to enter info about D. when tags where empty. Even if it doesn't follow to the letter specification - D. isn't "camera or image input device". For exif tag it could even not be configurable. IMO for IPTC tags it should be configurable. SVN commit 641435 by cgilles:
libkexiv2 from trunk : set the Exif.Image.Software tag only if it doesn't exist.
BUG: 142564
 M  +16 -4     kexiv2.cpp  
--- trunk/extragear/libs/libkexiv2/kexiv2.cpp #641434:641435
@@ -450,10 +450,22 @@
 {
     try
     {
-        QString software(program);
-        software.append("-");
-        software.append(version);
-        d->exifMetadata["Exif.Image.Software"]              = software.ascii();
+        // Check if Exif.Image.Software already exist. If yes, do not touch this tag.
+            
+        if (!d->exifMetadata.empty())
+	{
+            Exiv2::ExifData exifData(d->exifMetadata);
+            Exiv2::ExifKey key("Exif.Image.Software");
+            Exiv2::ExifData::iterator it = exifData.findKey(key);
+       
+            if (it == exifData.end())
+	    {
+                QString software(program);
+                software.append("-");
+                software.append(version);
+                d->exifMetadata["Exif.Image.Software"]      = software.ascii();
+	    }
+	}
 
         d->iptcMetadata["Iptc.Application2.Program"]        = program.ascii();
         d->iptcMetadata["Iptc.Application2.ProgramVersion"] = version.ascii();
     |