Konflikte beim Einsatz der beiden Bildverwaltungsprogramme und ihre Beseitigung.
Darktable
Seit vielen Jahren verwende ich das Programm Darktable für die Verwaltung und Bearbeitung meiner Fotos. Darktable ist freie Software, der Quellcode ist also einsehbar und es werden keine Lizenzkosten gefordert.
Darktable ist primär dafür konzipiert, um RAW-Daten (Rohe unbearbeitete Daten aus dem Kamerasensor) aus Digitalkameras zu importieren, zu entwickeln und zu verwalten. Ich verwende Darktable aber auch für:
- Die gecannten Dias und Papierbilder aus der analogen Zeit der Fotografie (ca. 1976 – 2004)
- Die JPEG-Bilder, die ich in der Anfangszeit der digitalen Fotografie gemacht habe
(ca. 2002 – 2013, mit Kameras wie z.B.: Olympus E-100RS, Olympus C8080WZ, für KAP: Sony DSC-P32, Pentax Optio S5z, S5i, S6 und S12). Diese ersten Digitalkameras lieferten noch keine RAW-Daten sondern nur JPEG oder TIFF-Bilder, die von der internen Software der Kamera bereits prozessiert sind.
Seit 2013 fotografiere ich fast nur noch im RAW-Format (mit ‚Micro Four Thirds‚ System-Kameras wie z.B.: Olympus ‚Pen‚ E-P1 und E-P3, Olympus OM-D E-M5 Mk.II usw.).
Durch den großen Funktionsumfang von Darktable kann ich alle Bearbeitungsschritte innerhalb von Darktable mit seinen Modulen und Erweiterungen erledigen, solange ich Bild für Bild einzeln bearbeite.
Erst wenn in speziellen Fällen mit mehreren Bildern gleichzeitig gearbeitet werden muss, werden andere Programme zusätzlich benötigt:
- Wenn mehrere Bilder in Ebenen übereinander gelegt werden sollen, verwende ich GIMP. Das ist aber nur sehr selten der Fall.
- Im Makro-Bereich werden Bildserien mit einem Focus-Stack aufgenommen um die Schärfentiefe zu erweitern. Die Kombination der Einzelbilder mit verschiedener Schärfe-Ebene zu einem durchgehend scharfen Gesamtbild übernehmen Spezialprogramme wie ‚Zerene Stacker‚. Das Ergebnis-Bild wird wieder in Darktable importiert.
- Auch für Panoramas werden mehrere Bilder einer Serie aufgenommen und zu einem Gesamtbild kombiniert. Von einem fixen Standort wird in alle Richtungen fotografiert, damit die Kombination der Bilder ein großes Gesamtbild ergibt, das einen großen Bildwinkel abdeckt, oft den gesamten Horizont (360°) oder sogar horizontal 360° und vertikal 180° (vom Zenit bis zum Boden). Das kann man sich vorstellen als eine Kugel rund um den Standpunkt. Hierfür verwende ich die Programme ‚hugin‚ oder ‚AutoPano Giga‚. Die weitere Aufbereitung für die Darstellung von Panoramen auf der Webseite erfolgt mit ‚Pannellum‚.
Auch für die Workflows mit den genannten Spezialprogrammen wird Darktable für die Vor- und Nachverarbeitung verwendet.
Prinzip
Bei der Entwicklung von Darktable gilt ein eisernes Prinzip: Die ursprüngliche Bilddatei, also meist ein RAW-Format, bleibt unangetastet und unverändert. Dies gilt auch, wenn die Ursprungsdatei im Format JPEG oder TIFF ist.
Die Einbettung von Metadaten in Bilddateien erfolgt optional erst beim Export aus Darktable, also wenn die Bearbeitungsschritte ausgeführt werden um eine JPEG-Datei oder ein anderes Format aus den Rohdaten zu erzeugen. Dies erfolgt dann in einer bestimmten Größe entsprechend der beabsichtigten Verwendung.
Wie wichtig dies Prinzip der unantastbaren Originale ist, sieht man im folgenden am Gegenbeispiel Shotwell.
Speicher
Alle Schritte der Bearbeitung (Modul-Parameter) während der Entwicklung und die Metadaten für die Verwaltung (Titel, Beschreibung, Koordinate, Stichworte, Bewertung, Farbmarkierung) werden von Darktable doppelt abgelegt: einerseits in Sidecars und andererseits in einer Datenbank. Sie werden aber grundsätzlich nie in die ursprüngliche Bilddatei eingefügt.
Sicecars sind XML-Dateien mit der Erweiterung .xmp, welche an den Namen der Bilddatei angehängt wird und die im gleichen Ordner neben der Bilddatei liegen.
Die Sidecars dienen dem Austausch von Bildern zwischen verschiedenen Darktable-Installationen, z.B. auf dem mobilen Laptop und dem stationären PC zuhause.
Die Datenbank dient der schnellen Suche und Filterung innerhalb einer Darktable-Installation.
Weitere Informationen auf der Projektseite darktable.org.
Shotwell
Am Beginn der digitalen Fotografie lieferten die Kameras nur JPEG-Bilder und noch keine RAW-Daten. Ich brauchte also ein Programm zur Verwaltung der JPEG-Fotos.
Ich habe damals das von der verwendeten Linux-Distribution Ubuntu vorgeschlagene Standard-Programm Shotwell verwendet. Im Einsatz waren u.a. die Versionen 0.15 bis 0.18 (ca. 2013 – 2015).
Nach der Umstellung auf das RAW-Format (ca. im Jahr 2014) habe ich dann Darktable verwendet, zunächst eine Zeit lang parallel zu Shotwell. Da im Parallelbetrieb Probleme auftauchten, dann später nur noch Darktable allein.
Die Übernahme der in Shotwell bereits erfassten Metadaten (Tags, Schlagworte) nach Darktable erfolgte mit Hilfe eines Python-Skriptes von einer Datenbank zur anderen. Die Formate der hierarchischen (mehrstufigen, verzweigten, gegliederten, …) Tags zwischen den beiden Programmen sind nicht kompatibel und wurden vom Python-Skript transformiert.
Das in Darktable geltende Prinzip der unveränderbaren Ursprungsdatei hat sich Shotwell nicht zu eigen gemacht. Jedenfalls nicht bei den oben genannten von mir verwendeten Versionen.
Der vorübergehende Einsatz von Shotwell in den Jahren 2013 – 2015 hat sich nachträglich als Fehler heraus gestellt. Shotwell hatte einige unangenehme Eigenschaften, die – insbesondere im Wechselspiel mit Darktable – stören.
Design-Fehler
Die N:N-Relationen zwischen Bildern und Tags werden (bzw. wurden) in der Shotwell-Datenbank als lange Listen in Datenbank-Spalten gequetscht. Die Funktionen einer relationalen Datenbank können dadurch nicht effektiv für Suchen oder ähnliches verwendet werden. Mit größerer Anzahl von Bildern und Tags wurde das Programm immer langsamer.
Der aus meiner Sicht größte Design-Fehler dieser Shotwell-Versionenen bestand aber darin, dass alle erfassten Metadaten (auch) in der Ursprungsversion der Bilddatei abgelegt wurden. Die Originaldatei aus der Kamera wird dadurch geändert, geht also verloren.
Ein in der Praxis funktionierendes Tagging-Schema muss man sich mühsam erarbeiten und immer weiter verfeinern. Das ist kein fester Standard sondern das ergibt sich erst mit wachsendem Bildbestand durch Anpassung an die individuellen Bedürfnisse. Bei jeder dieser mehrfachen Anpassungen wurde von Shotwell immer wieder die Ursprungsdatei verändert.
Es ändern sich manchmal nur wenige Zeichen (Bytes) an einem Tag (Schlagwort), dies Tag ist aber mehreren Bildern zugeordnet, die auch dann alle vom Programm verändert werden. Diese veränderten Bilddateien sind aber jeweils mehrere Millionen Bytes (Megabytes) groß. Sie werden im Laufe der Zeit immer und immer wieder geändert, Dateigröße und Dateidatum ändern sich permanent. Das hat einige Nachteile:
- Fragmentierung des Dateisystems durch Neu-Schreiben großer Datenmengen
- Verschleiß bei SSD
- Bei einer inkrementellen Datensicherung, die nur geänderten Dateien neu sichert, erzeugt dies einen Mehraufwand. Die großen Dateien, an denen sich eigentlich nur wenige Zeichen geändert haben, werden in voller Größe neu gesichert. Das steht in keinem Verhältnis und verbraucht viel Speicherplatz und Laufzeit bei der Sicherung.
Zum Vergleich: Bei Darktable reicht die einmalige Sicherung der Original-Bilddatei (ca. 20 MB).
Bei Bearbeitung und Tagging verändern sich danach immer nur die relativ kleinen XML-Sidecars (ca. 10 KB).
Diese sind um den Faktor 2000 kleiner, brauchen also deutlich weniger Speicherplatz und Laufzeit bei den inkrementellen Sicherungen.
Altlasten
Kontaminierte Bilddateien
Unveränderte Originale (wie aus der Kamera) aus der Anfangszeit der Digitalfotografie sind im Dateisystem meines PC nicht mehr zu finden, alle JPEG aus dieser Zeit wurden von Shotwell inzwischen verändert.
Meine aktuelle inkrementelle Datensicherung auf großen externen USB-Festplatten reicht ca. 7 Jahre zurück also bis ca. 2017. Da waren schon alle ursprünglichen JPEG-Bilddateien aus den Digitalkameras von Shotwell kontaminiert worden.
Es gibt in den Schubläden noch ältere Sicherungen auf DVD. Daraus die Originale wieder herzustellen ist aber ein größerer manuellen Aufwand, u.a. weil die Daten über viele Datenträger verstreut sind weil ich ja inzwischen auch aussortiert habe. Ich müsste mir fast jede einzelne Datei anschauen um sie zu prüfen und ggf. auszutauschen. Aktuelle PCs haben nicht mal mehr ein Laufwerk für diese Datenträger.
ungewollte Tag-Importe
Es passiert immer mal wieder, dass eine solche von Shotwell kontaminierte Datei neu nach Darktable importiert wird. Aktuell übertrage ich z.B. Panoramen von der alten in die neue (WordPress) Version der Webseite. Dabei habe ich einige der Panoramen komplett neu überarbeitet. Die Panorama-Programme hugin und AutoPano Giga übertragen die in den Eingangsbildern enthaltenen Tags (Schlagworte) in das Panorama-Ergebnis. Wenn ich dieses dann für die weitere Verarbeitung wieder nach Darktable importiere, findet Darktable diese eingebetteten Metadaten und es passiert folgendes:
- die hierarchischen Tags aus Shotwell werden in die einzelnen Hierarchie-Stufen zerlegt
- jeder Teil wird als einzelner neuer Tag in den Tag-Katalog von Darktable eingefügt
- die Tags werden mit dem importierten Bild verknüpft
- Ich muss alle neu erzeugten Tags finden, die Verbindung des Tag zum Bild und den Tag an sich löschen
Das sind lästige und unnötige Arbeiten.
Analyse
Shotwell 0.15 bis 0.18 haben folgende Daten in den JPEG-Dateien geändert:
- EXIF-Schema:
- Exif.Image.Software
- IPTC-Schema:
- Iptc.Application2.Keywords
- Iptc.Application2.Program
- Iptc.Application2.ProgramVersion
- XMP-Schema:
- Xmp.dc.subject
- Xmp.digiKam.TagsList
- Xmp.MicrosoftPhoto.LastKeywordXMP
Ohne Anspruch auf Vollständigkeit.
Lösung
Ich schreibe ein Bash-Script, dass mit Hilfe der Tools ‚exiv2‚ und ‚jhead‚ diese eingebetteten Tags aus den Bilddateien löscht und das Datum der letzten Datei-Änderung zurück setzt auf den Zeitpunkt der Aufnahme (Exif.Photo.DateTimeOriginal).
Ich hoffe, damit die Bilddateien wieder annähernd in den Originalzustand zu versetzen.
Die Veröffentlichung des Scriptes erfolgt hier nach erfolgreichem Praxis-Einsatz.
Bei Interesse schick mir eine Anfrage per Mail.