MetaExtract EXIF & IPTC
Wer mit Fotos oder andere anderen Multimediaelementen in Verbindung mit DAM arbeitet, kommt an der Extension cc_metaexif nicht vorbei. Diese sorgt dafür, daß Metadaten aus den Exif-Informationen von Bildern in die Beschlagwortung von DAM übernommen werden.
Das Problem
So praktisch cc_metaexif ist, so störte mich doch, dass speziell Informationen wie Beschreibung, Copyright, Fotograf, usw nicht aus den EXIF-Informationen übernommen wurden, sondern beim Indexing angegeben oder nachbearbeitet werden müssen.
Änderungen zum Original
Da bei cc_metaexif die Indizierung durch drei verschiedene Dateien erfolgen kann, war die erste Aufgabe, die richtige Datei zu finden. Diese Aufgabe war relativ einfach zu lösen. Es handelt sich um die Datei class.tx_ccmetaexif_sv2.php
Die Funktionsweise dieser Datei ist ebenfalls leicht überschaubar, da es in dieser Datei nur eine Klasse mit zwei Funktionen gibt. Die größere der beiden enthält wiederum eine switch Anweisung welche die eientliche Aufbereitung der Exif-Daten für DAM erledigt. Die notwendigen Änderungen waren daher mit zusätzlichen case Zweigen zu lösen.
Änderungen im Detail
Nachfolgend der gesamte Code der switch Anweisung, einschließlich der originalen case Zweige.
Code
// add to DAM table
switch ($name) {
case 'CameraModel':
case 'Model':
$this->out['fields']['file_creator'] = $value;
break;
case 'ImageCreated':
case 'DateTimeOriginal':
$this->out['fields']['date_cr'] = $this->parseDate($value);
break;
case 'HorizontalResolution':
$this->out['fields']['hres'] = intval($value);
break;
case 'VerticalResolution':
$this->out['fields']['vres'] = intval($value);
break;
case 'ColorSpace':
case 'ColorSpaceInformation':
$this->out['fields']['color_space'] = ($value==1)?'sRGB':$value;
break;
case 'Title':
$this->out['fields']['title'] = $value;
break;
case 'ImageDescription':
$this->out['fields']['description'] = $value;
break;
case 'Copyright':
$this->out['fields']['copyright'] = $value;
break;
case 'Artist':
$this->out['fields']['creator'] = $value;
break;
}