mit PHP eine Bildergalerie erstellen: EXIF/IPTC auslesen
Im Folgenden wollen wir eine automatische Bildergalerie erstellen. Dazu benötigen wir als Vorkenntnisse das Kapitel über Verzeichnis einlesen und das vorhergehende Kapitel über Arrays.
Im ersten Schritt lesen wir ein Verzeichnis aus und speichern alle gefundenen Dateinamen der Bilder in einem Array ab.
<?php
$verzeichnis = ".";
if (is_dir($verzeichnis))
{
if ( $handle = opendir($verzeichnis) )
{
while (($file = readdir($handle)) !== false)
{
echo "<li>filename: $file ";
echo "<li>filetype: ". filetype( $file) . "<hr>\n";
// Test, ob ein Bilder (Endung .jpg) vorliegt
if ( filetype( $file) == "file"
AND substr( $file, -4) == ".jpg")
{
// Dateiname wird im Array bilderdateinamen
// gespeichert
$bilderdateinamen[] = $file;
}
}
closedir($handle);
}
}
// Ausgabe der Bilderdateinamen zur Kontrolle
echo "<pre>";
print_r ( $bilderdateinamen );
?>
Im nächsten Schritt benötigen wir Bilder - nehmen Sie folgenden Bilder zum Testen (auf jeden Fall diese für den Aha-Effekt für die automatische Beschriftung ;) Folgende Bilder werden hier verkleinert dargestellt:
Die Bilder stammen von mir (und können deshalb auch zum Testen eingesetzt werden) und weitere Bilder zum Thema Urlaub in und um Las Vegas können auf http://www.las-vegas-urlaub.com angesehen werden.
Die Bilder können durch Anklicken mit der rechten Maustaste auf der eigenen Festplatte gespeichert werden. Die müssen im selben Verzeichnis gespeichert werden, wo auch das Programm zum Bildergalerie gespeichert ist!
<?php
$verzeichnis = ".";
if (is_dir($verzeichnis))
{
if ( $handle = opendir($verzeichnis) )
{
while (($file = readdir($handle)) !== false)
{
echo "<li>filename: $file ";
echo "<li>filetype: ". filetype( $file) . "<hr>\n";
// Test, ob ein Bilder (Endung .jpg) vorliegt
if ( filetype( $file) == "file"
AND substr( $file, -4) == ".jpg")
{
// Dateiname wird im Array bilderdateinamen
// gespeichert
$bilderdateinamen[] = $file;
}
}
closedir($handle);
}
}
// Ausgabe der Bilderdateinamen zur Kontrolle
echo "<pre>";
print_r ( $bilderdateinamen );
echo "<hr>";
foreach ( $bilderdateinamen AS $dateiname ) {
echo "Dateiname: $dateiname:\n";
$exif = exif_read_data($dateiname, ANY_TAG, true, true);
// print_r ($exif);
echo '<h2>'. $exif['WINXP']['Title'] . '</h2>';
echo '<img src="'. $dateiname . '"';
echo $exif['COMPUTED']['html'];
echo ' alt="';
echo $exif['WINXP']['Title'];
echo '"> ';
echo '<hr>';
}
?>
Bestimmt kommt gerade die Frage auch, woher um Gottes willen der Bildtitel kommt, der nichts mit dem Dateinamen zu tun hat? Der ist in der Bilddatei mit integriert. Dies ist einfach möglich durch IPTC und EXIF. Diese Daten lesen wird im unserem PHP-Programm zum Bildergalerie erstellen aus. Es geschieht über exif_read_data und die gewonnenen Daten wandern in das Array $exif. Lassen Sie sich einfach mal über print_r den Inhalt des Array $exif anzeigen!
Um Titel und Verschlagwortung in die Bilder zu integrieren, empfiehlt sich Windows (wie im nächsten Bild zu sehen ist) oder auch verschiedene andere Programme können dazu hergenommen werden, wie beispielsweise das bekannte IrfanView.
Wenn Sie einen Fehler finden, bitte mitteilen (egal ob Schreibfehler oder inhaltlicher Fehler).
Mit Maus fehlerhafte Stelle markieren und übernehmen mit folgendem Button: