Exif-Daten aus JPEG-Bildern auslesen

„Kein Bild ohne Bildbeschreibung“ lautet eine goldene Regel aus der Reihe der Layouter für Zeitungen und Magazine. Im Web sollte es nicht anders sein. Eine einfache Möglichkeit, Bildbeschreibungen zu generieren, ist diese direkt aus dem Bild auszulesen. Hierfür steht in PHP-Versionen ab 4.2.0 normalerweise ein Exif-Modul zur Verfügung, welche genau diese Funktionalität ermöglicht.

Exkurs: Echangeable Image File Format (Exif)

Zitat Wikipedia:
Das Exchangeable Image File Format (offizielle Abkürzung ist Exif, nicht EXIF) ist ein Standard der Japan Electronic and Information Technology Industries Association (JEITA) für das Dateiformat, in dem moderne Digitalkameras Informationen über die aufgenommenen Bilder (Metadaten) speichern.

[…]

Exif-Daten werden direkt in die Datei von Bildern der Formate JFIF (JPEG) oder TIFF geschrieben – im so genannten Header (Bereich am Anfang der Bilddatei noch vor der eigentlichen Bildinformation). Mittlerweile legt so gut wie jede Digitalkamera diese zusätzlichen Informationen zu der Aufnahme im Bild ab, was zum Teil auch schon bei Kameras von Mobiltelefonen der Fall ist.

Artikel Exchangeable Image File Format. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 20. Februar 2008, 19:53 UTC. URL: http://de.wikipedia.org/w/index.php?title=Exchangeable_Image_File_Format&oldid=42781444 (Abgerufen: 3. März 2008, 19:41 UTC)

Exif ist also weitestgehend standardisiert, anerkannt und etabliert und ermöglicht den Transport der Informationen dort wo sie hingehören: Im Bild selbst. Somit ist es die beste Lösung, die Bildbeschreibung direkt im Bild abzulegen (so wie es mittlerweile üblich ist) und diese dann mittels PHP auszulesen.

Dies hat folgende Vorteile:

  • es ist keine Trennung zwischen Bild und Beschreibung nötig
  • ändert sich das Bild, ändert sich automatisch die Beschreibung
  • auch nach dem Umbenennen des Bildes wird die Beschreibung korrekt angezeigt (spätestens hier kämen datenbankgestützte Lösungen ins straucheln)
  • die Bildbeschreibung bleibt auch nach dem Download des Bildes erhalten
  • um die Übersicht über seinen Bildbestand zu halten, werden die meisten Bilder sowieso schon lokal „getagged“ – man erspart sich also doppelt Arbeit

 

So gehts: Bildbeschreibung aus JPEG-Bildern auslesen

Wie eingangs erwähnt, ist für die Exif-Funktionalität eine PHP-Version ab 4.2.0 mit aktiviertem „EXIF-Support“ notwendig. Um herauszufinden, ob euer Server Exif unterstützt, sollte man ich zunächst die PHP-Konfiguration ausgeben lassen (siehe: Konfiguration ausgeben).

Dort sucht man dann nach EXIF und in der darunter aufgeführten Tabelle nach „EXIF Support“. Dieser sollte auf „enabled“ stehen – logisch. Damit erfüllt die PHP-Konfiguration die Bedingung für die Verwendung der obligatorischen Funktion „exif_read_data()“ (siehe auch PHP-Manual).

Eine simples Skript zur Ausgabe der Bildbeschreibung (ImageDescription) könnte dann so aussehen:

<?php
//Exif-Daten auslesen und in Array $Exif speichern
 $Exif = exif_read_data("image1.jpg", 0, true);

//Hier erfolgt die Ausgabe   
 echo $Exif[IFD0][ImageDescription]; 
?>

Um ALLE (nicht nur die Bildbeschreibung) enthalteten Exif-Tags auszugeben, kann folgender Code-Schnipsel verwendet werden:

<?php
//Exif-Daten auslesen und in Array $Exif speichern
       $Exif = exif_read_data("meinbild1.jpg", 0, true);
       if($Exif === false)
      {

          echo"Keine Exif-Daten gefunden..";
      }
      else
      {
          foreach($Exif as $Schluessel=>$Abschnitt)
          {
              foreach($Abschnitt as $Name=>$Wert)
              {
                  echo"$Schluessel.$Name: $Wert<br>\n";
              }
          }
      }
?>

1 Kommentar Schreibe einen Kommentar

  1. Ich probierte mich schon eine ganze Zeit am Einsatz von exif_read_data() – habe es aber bisher nicht auf die Reihe bekommen, die Beschreibung auszulesen. Glücklicherweise bin ich auf diesen Text gestossen und nun funktioniert es 1A. Danke!!

Schreibe einen Kommentar

Personenbezogene Daten interessieren mich nicht – daher ist die Angabe von Name und E-Mail-Adresse freiwillig. Jedoch wird jeder Kommentar von mir geprüft, bevor er freigeschalten wird.