Die WordPress Bildunterschrift aus Darktable Metadaten auslesen

Datenfluss von Darktable 4.2.1 nach WordPress 6.2 reparieren

Das Problem

Ich habe begonnen, die Webseite FOTODRACHEN.de von statischem HTML auf ein modernes Content-Management-System (CMS) umzustellen. Ich arbeite mich gerade in die Bedienung von WordPress ein.
Ich möchte viele Bilder zeigen, daher wäre es eine Erleichterung, wenn die im Bildverarbeitungsprogramm Darktable bereits vorhandenen Metadaten nach WordPress übernommen würden, damit ich sie nicht für jedes Bild neu eintippen muss. Meine Tests zeigen, dass dies nur eingeschränkt der Fall ist.

Die Analyse

In den Metadaten von Darktable kann man zu einem Bild u.a. folgende Texte erfassen:

  • Titel
  • Beschreibung
  • Notizen

Im Export-Modul unter “Einstellungen” kann über die Optionen ..

  • EXIF Daten
  • Metadaten

.. ausgewählt werden, dass die erfassten Texte mit in die exportierte Datei (meist JPEG) geschrieben werden.
Die Option “Metadaten” schreibt in die Metadaten-Gruppe “Xmp” und die Option “EXIF Daten” schreibt natürlich in die Metadaten-Gruppe “EXIF“.
Die Metadaten-Gruppe “IPTC” wird von Darktable nicht gefüllt.

WordPress wertet beim “neu hinzufügen” von Medien, hier Bildern, nur die Gruppen “EXIF” und “IPTC” aus, aber nicht “Xmp”.
Gemeinsam zwischen Darktable und WordPress ist also nur die Gruppe “EXIF”.

Die Felder “Titel” und “Notizen” werden von Darktable nicht in die EXIF-Gruppe exportiert, nur das Feld “Beschreibung” (description).
Dies ist also das einzige gemeinsame Feld, welches für den Transport von Bildunterschriften (Caption) verwendet werden kann.

Wenn das Feld “Beschreibung” ausschließlich ASCII-Zeichen enthält, dann wird es in das Feld “EXIF ImageDescription” exportiert.

Wenn aber besondere Zeichen enthalten sind, wie z.B. deutsche Umlaute (äüöÄÜÖß), dann wird statt dessen das Feld “EXIF UserComment” verwendet, welches alle Unicode-Zeichen (UTF-8) enthalten darf. Bei anderen nationalen Zeichen dürfte das ähnlich sein, z.B. bei französischen Zeichen mit Akzent. Der Text landet also entweder in “ImageDescriptionODER in “UserComment“, das jeweils andere Feld bleibt immer leer.

In dieser Konstellation wird “UserComment”, also Texte mit Umlauten, nicht nach WordPress 6.2 übernommen, obwohl es in der Dokumentation teilweise anders beschrieben ist.

Die Lösung

Im WordPress 6.2 im PHP-Programm “/wp-admin/includes/image.php” befindet sich die Function “wp_read_image_metadata()“, die den Import der Metadaten regelt. Der Import von “UserComment” befindet sich in einem if-Zweig der nur dann durchlaufen wird, wenn auch “ImageDescription” nicht leer ist. Das ist bei Darktable-Exporten aber nie der Fall.

Folgende Korrektur ab Zeile 877 hat das Problem bei mir gelöst:

// }
} elseif ( empty( $meta['caption'] ) && ! empty( $exif['COMPUTED']['UserComment'] ) ) {
	$meta['caption'] = trim( $exif['COMPUTED']['UserComment'] );
	$description_length = strlen( $exif['COMPUTED']['UserComment'] );
	if ( empty( $meta['title'] ) && $description_length < 80 ) {
		$meta['title'] = trim( $exif['COMPUTED']['UserComment'] );
	}
}

Wirkung: Der Inhalt von “EXIF UserComment” aus dem importierten JPEG wird bei WordPress in die “Caption” (Bildunterschrift) übernommen, wenn der Text kürzer als 80 Zeichen ist, zusätzlich auch in den “Titel” des Bildes.

Ein Kommentar

Kommentare sind geschlossen.