Home Dokumente Bilder Anleitungen Links Impressum

EXIF-Daten mittels PHP lesbarer darstellen

Das Exchangeable Image File Format (EXIF) dient der Speicherung von Meta-Informationen in Bilddateien. Zur Zeit unterstützen zum Beispiel fast alle Digitalkameras das EXIF-Format, um Angaben über Blende, Belichtungszeit, Format, Größe, etc. in JPG-Bildern zu hinterlegen.

Die Scriptsprache PHP unterstützt schon seit längerem mit der Funktion exif_read_data einen sehr unkompizierten Umgang mit EXIF-Daten. Es reicht eine einzige Zeile Programmcode, um alle EXIF-Informationen eines Bildes in ein Array zu laden:

$exif_array = exif_read_data("dateiname.jpg");
print_r($exif_array);

Das Ergebnis sieht je nach Kamerahersteller ein klein wenig unterschiedlich aus. Gleich bleiben jedoch die prinzipielle Gruppierung (hierzu empfiehlt sich ein Blick in die PHP-Anleitung) und die wichtigsten Angaben über ein Bild.

Ein Ausschnitt aus einem typischen EXIF-Array könnte folgendermaßen aussehen:

Array (


   [FILE] => Array (
         [FileName] => dateiname.jpg
         [FileDateTime] => 1073599087
         [FileSize] => 104173
         [FileType] => 2
         [MimeType] => image/jpeg
         [SectionsFound] => ANY_TAG, IFD0, THUMBNAIL, EXIF
   )

   [COMPUTED] => Array (
         [html] => width="700" height="526"
         [Height] => 526
         [Width] => 700
         (...)
   )

   [IFD0] => Array (
         [Make] => FUJIFILM [Model] => FinePix S602 ZOOM
         (...)
   )

   [THUMBNAIL] => Array (
         (...)
   )

   [EXIF] => Array (
         [ExposureTime] => 10/260
         [FNumber] => 280/100
         [ExposureProgram] => 2
         [ISOSpeedRatings] => 200
         [ExifVersion] => 0220
         [DateTimeOriginal] => 2002:11:07 13:07:34
         [DateTimeDigitized] => 2002:11:07 13:07:34
         (...)
         [MeteringMode] => 5
         [LightSource] => 0
         [Flash] => 16
         [FocalLength] => 780/100
         [FlashPixVersion] => 0100
         [ColorSpace] => 1
         [ExifImageWidth] => 700
         [ExifImageLength] => 526
         [FocalPlaneXResolution] => 3704/1
         [FocalPlaneYResolution] => 3704/1
         [FocalPlaneResolutionUnit] => 3
         [SensingMethod] => 2
         [FileSource] => 
         [SceneType] =>
         [ExposureMode] => 0
         [WhiteBalance] => 0
         [SceneCaptureType] => 0
         [Sharpness] => 0
         [SubjectDistanceRange] => 2
   )
)

Ein Großteil der Werte ist selbstsprechend. Einige Daten, wie zum Beispiel MeteringMode liefern jedoch nur eine Zahl. Die Bedeutung dieser Zahl ist erst durch einen Blick die Spezifikation ersichtlich. So steht eine "1" bei MeteringMode zum Beispiel für "Average". Eine "4" wäre "MultiSpot", usw.

Für meine Bildergalerie habe ich die Unterstützung von EXIF-Daten sowohl in der HTML-Betrachtung als auch in RDF eingebaut. Daher war es für mich notwendig, dass ich die Daten aus der Spezifikation abtippe und in einer Konfiguration hinterlege. Nicht alle EXIF-Daten finde ich sinnvoll. Daher habe ich mir auch nur bei fünf Metadatenangaben die Mühe gemacht.

 // Konfiguration zu EXIF Daten
$_cfg['exif']['ExposureMode']=array(
'Auto Exposure',
'Manual Exposure',
'Auto bracket');
$_cfg['exif']['MeteringMode']=array(
'unknown',
'Average',
'CenterWeightedAverage',
'Spot',
'MultiSpot',
'Pattern',
'Partial');
$_cfg['exif']['SensingMethod']=array(
'',
'Not defined',
'One-chip color area sensor',
'Two-chip color area sensor',
'Three-chip color area sensor',
'Color sequential area sensor',
'Trilinear sensor',
'Color sequential linear sensor');
$_cfg['exif']['SubjectDistanceRange']=array(
'unknown',
'Macro',
'Close view',
'Distant view');
$_cfg['exif']['ExposureProgram']=array(
'Not defined',
'Manual',
'Normal program',
'Aperture priority',
'Shutter priority',
'Creative program',
'Action program',
'Portrait mode',
'Landscape mode');

Die Darstellung der Daten erfolgt dann ganz einfach. Das Beispiel ist eine Zeile aus dem PHP-Code, der die RDF-Description für jedes Bild erzeugt.

if (is_numeric( $exif_array['EXIF']['ExposureMode'])) echo "  <exif:exposureMode>
".$_cfg['exif']['ExposureMode'][$exif['EXIF']['ExposureMode']]."</exif:exposureMode>\n";

Im aktuellen Beispiel würde damit innerhalb der HTML-Seite folgende Zeile geschrieben werden:

<exif:exposureMode>Auto Exposure</exif:exposureMode>

Beispiele für den Einsatz von EXIF-Daten finden sich in Massen in meiner bereits genannten Bildergalerie. Die RDF-Daten sind in normalen Browsern nicht sichtbar. Also muss man hierzu einen Blick in den HTML Source-Code werfen.

Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehme ich keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
Besuchen Sie auch meine Bildergalerie unter gallery.plogmann.net.
© Stefan Plogmann, 1996-2010

druckversion switch to english homepage suche
aktuelles