EXIF-Header-Daten zur Bildauszeichnung
Hinlänglich bekannt ist ja wohl, dass Digitalkameras entsprechende EXIF-Datentags mitschreiben. Wer mehr als ein paar Bilder präsentieren möchte und nicht vorhat Bildtitel, Autor, Aufnahmedatum oder Bildbeschreibung u.s.w. manuell im <figcaption>-tag zu beschreiben, muss dies in einem Array ( JavaScript oder PHP ) oder einer Textdatei, die mittels PHP zeilenweise auszulesen ist, notieren.
Es geht aber auch über die MetaEinträge: Bildklick (rechte Maustaste auf die darzustellenden Bilder) ► Eigenschaften ► Details und die entsprechenden Formularfelder eintragen. Was einem besser von der Hand geht, entscheidet den Arbeitsweg oder man macht weiter so, wie schon immer gehandhabt.
Für mich gilt: wende das an, was dem Projekt am besten angepasst ist. Wenn man dann noch auf den glücklichen Umstand stößt, dass einem Auftraggeber diese MetaEinträge keine böhmischen Dörfer sind, ist die Antwort entschieden. Kostet ja alles Zeit und Geld!
Nun denn, was gibt es zu exif_read_data() zu sagen: „Eigentlich garnicht so viel!“
Die MetaDaten aus der zweidimensionalen Tabelle
$exif = exif_read_data($value, 0, true);
notieren, die man zur Bildbeschreibung für wichtig hält.
Mit $value wird in einer foreach-Schleife der Bildpfad übergeben.
$bildtext = isset($exif["IFD0"]["ImageDescription"])
? $exif["IFD0"]["ImageDescription"] :'' ;
$bildcomm = isset($exif["IFD0"]["Comments"])
? $exif["IFD0"]["Comments"] : " " ;
/* iconv ist wichtig um Sonderzeichen/Umlaute zu formatieren */
$bildcomm = iconv("ISO-8859-1//TRANSLIT","UTF-8",$bildcomm ) ;
$bildsub = isset($exif["IFD0"]["Subject"])
? $exif["IFD0"]["Subject"] : " " ;
/* gilt für "Comments" und "Subject"
Sonst kommt sowas: F e i n e s S c h m ä c k l e */
$bildsub = iconv("ISO-8859-1//TRANSLIT","UTF-8",$bildsub ) ;
$bildautor = isset($exif["IFD0"]["Artist"])
? "Bild: ".$exif["IFD0"]["Artist"]
: "© Auftraggeber" ;
$bilddatum = isset($exif["EXIF"]["DateTimeOriginal"])
? $exif["EXIF"]["DateTimeOriginal"] : '' ;
/* $bilddatum umformatieren sonst Jahr:Monat:Tag */
$bdy = substr( $bilddatum , 0, 4 ) ;
$bdm = substr( $bilddatum , 5, 2 ) ;
$bdm = $ar_mn[$bdm*1] ;
$bdt = substr( $bilddatum , 8, 2 ) ;
$bdhm = substr( $bilddatum , 11, 5 ) ;
$bdatum = "$bdt. $bdm $bdy $bdhm" ;
Für die paar Bilder lohnt es sich zwar noch nicht darüber nachzudenken. Soll es aber mal mehr werden, wird der Aufwand in externen Textdateien die Beschriftung einzutragen, immens. Ebenso arbeitsintiv wird bei umfangreichen Bildpräsentationen der manuelle Eintrag in die entsprechenden tags. Nicht zuletzt ist von Vorteil: Es wird alles mit jedem Bild mitgeschickt!