Januar 6, 2022

Erstellen Sie eine dynamische Fotogalerie mit PHP in drei Schritten

Wenn Sie eine Digitalkamera haben, haben Sie wahrscheinlich auch eine digitale Fotogalerie mit unvergesslichen Momenten. Und wenn Sie eine digitale Fotogalerie haben, sind Sie fast sicher auf ein sehr häufiges Problem gestoßen: Organisieren Sie Ihre Fotos so, dass sie leicht gesucht und indiziert werden können.

Nun, Sie wissen das vielleicht nicht, aber die meisten Digitalkameras betten automatisch beschreibende Metadaten in die Kopfzeilen der von ihnen erstellten Bilder ein. Diese Header, EXIF-Header (EXchangeable Image File) genannt, enthalten Informationen über die Kameramarke und das Modell, die Zeit und das Datum, an dem das Foto aufgenommen wurde, die technischen Spezifikationen des Fotos (Shutterspeed, Blende usw.) und eine Miniaturansicht des Bildes. Darüber hinaus können Sie mit vielen Bildbearbeitungsprogrammen diese automatisch generierten Überschriften mit eigenen Beschreibungstexten ergänzen – zum Beispiel „Sallys erstes Fußballspiel“ oder „Betrinken in Malta“.

Ich bin sicher, Sie können sehen, wohin ich damit gehe. Mit ein wenig Phantasie und kreativem Denken ist es möglich, die von Ihrer Kamera generierten Header (und, wenn Sie Zeit und Motivation haben, von Ihnen weiter ergänzt) zu verwenden, um Ihre Fotosammlung automatisch zu organisieren und zu beschreiben. Dieser Artikel zeigt Ihnen, wie Sie die EXIF-Funktionen von PHP verwenden.

Schritt 1: Stellen Sie sicher, dass Ihr PHP-Build EXIF unterstützt

Um EXIF-Header lesen zu können, muss Ihr PHP-Build Unterstützung für das EXIFmodule enthalten. Sie können überprüfen, ob diese Unterstützung aktiviert ist, indem Sie ein PHP-Skript erstellen, das den in Listing A gezeigten Code enthält.

Auflistung A

<?php
phpinfo();
?>

Zeigen Sie die Ausgabe dieses Skripts in Ihrem Webbrowser an und überprüfen Sie die Liste der Erweiterungen, um festzustellen, ob EXIF enthalten ist. Wenn ja, fahren Sie mit dem nächsten Schritt fort. Wenn nicht, müssen Sie die EXIF-Funktionen von PHP aktivieren, indem Sie die Erweiterungszeile in PHP aufheben.ini (Windows) oder kompilieren Sie Ihren PHP-Build mit dem Argument –enable-exif (UNIX). Weitere Informationen dazu finden Sie auf der PHP-Website.

Schritt 2: Verschieben Sie Ihre Fotos in ein einzelnes Verzeichnis

Als nächstes sammeln Sie alle Ihre Fotos in einem einzigen Verzeichnis unter dem Webserver documentroot. Dies ist auch ein guter Zeitpunkt, um jedem Bild eigene beschreibende Kommentare hinzuzufügen (obwohl dies nicht unbedingt erforderlich ist). Eine Reihe guter Shareware und Freeware-Tools stehen zur Verfügung, um Ihnen dabei zu helfen; Werfen Sie einen Blick auf Exifer für Windows oder RoboPhoto.

Schritt 3: Schreiben Sie Code, um Fotokopfzeilen und Kommentare zu lesen

Der letzte Schritt besteht darin, die PHP-Skripte zu schreiben, die EXIF-Daten aus Ihren Bildern extrahieren und automatisch eine Webseite mit Miniaturansichten, technischen Informationen und Links zu größeren Versionen jedes Bildes generieren. Es gibt zwei Skriptehier: die erste, Galerie.php, (siehe Listing B) sucht nach Fotos und extrahiert EXIF-Header von ihnen, während die zweite, Thumbnail.php, (siehe Listing C) ist verantwortlich für das Extrahieren des Miniaturbildes vonjedes Foto.

Listing B – Hier ist der Code für die Galerie.php

<html>
<head></head>
<body>
<table>
<?php
// Verzeichnispfad definieren
$dir = „.“;
// durch Dateien iterieren
// nach JPEGs suchen
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== falsch) {
if (preg_match(„/.jpg/“, $file)) {
// EXIF-Header lesen
$exif = exif_read_data($file, 0, true);
echo „<tr>“;
// get thumbnail
// link zum vollständigen Bild
echo „<td valign=top><a href=$dir/$file><imgsrc=thumbnail.php?file=$file></a><td>“;
echo „<td valign=top><Schriftgröße=-1>“;
// get file name
echo „Datei: <b>“ . $exif . „</b><br/>“;
// get timestamp
echo „Zeitstempel: “ . $exif . „<br/>“;
// get image dimensions
echo „Abmessungen: “ . $exif . “ x “ . $exif . “ <br/>“;
// get kamera Marke und Modell
echo „Kamera: “ . $exif;
echo „</font></td>“;
echo „</tr>“;
}
}
closedir($dh);
}
}
?>
</ tabelle>
</ körper>
</ html>

Thisscript verwendet die Verzeichnisfunktionen von PHP, um eine Liste aller JPEG-Bilder im Verzeichnis abzurufen, und verwendet dann die Funktion exif_read_data(), um die EXIF-Header von jedem Bild als Array zu lesen. Jedes Bild wird als Miniaturansicht mithilfe der von der Miniaturansicht bereitgestellten Informationen angezeigt.php, und eachthumbnail ist selbst mit seinem übergeordneten Image verlinkt. Relevante Informationen – Imagename, Abmessungen, Zeitstempel und Kameramodell — werden aus diesen Headern extrahiert und mit jedem Thumbnail angezeigt.

Wenn Sie einen EXIF-Editor verwendet haben, um Ihre eigenen Kommentare zu den Bildern hinzuzufügen, können Sie auf die entsprechenden Array-Elemente zugreifen, um diese Informationen abzurufen und anzuzeigen. Schauen Sie mit print_r($exif) in das Array $exif , um den Array-Pfad für Ihre benutzerdefinierten Metadaten herauszufinden.

Hinweis: Verschiedene Kamerahersteller verwenden die EXIF-Header auf unterschiedliche Weise. Wenn der Ausgabe des obigen Skripts einige Informationen zu fehlen scheinen, sollten Sie mit print_r($exif) in das Array $ exif schauen, um genau herauszufinden, wie Ihre Kamera die EXIF-Daten schreibt, und entsprechende Anpassungen an den Array-Schlüsseln im obigen Skript vornehmen (ListingB).

Listing C – Und hier ist der Code für Thumbnail.php

<?php
// Verzeichnispfad definieren
$dir = „.“;
$image = exif_thumbnail($dir . „/“ . $_GET);
header(„Inhaltstyp: Bild/jpeg“);
echo $image;
?>

Thisscript ist sehr einfach — es ruft den Bilddateinamen von der URL ab und verwendet die exif_thumbnail() Funktion, um eine Miniaturansicht aus dem benannten Bild zu extrahieren. Diese Miniaturansicht wird dann zusammen mit einem entsprechenden Header zur Anzeige an den Browser gesendet.

Platzieren Sie beide Skripte in dem Verzeichnis, das Ihre Fotos enthält, und verwenden Sie dann Ihren Webbrowser, um auf die Galerie zuzugreifen.PHP. Sie sollten Miniaturansichten der Bilder im Verzeichnis sehen, zusammen mit beschreibenden Informationen zu jedem.Wenn Sie auf ein Miniaturbild klicken, gelangen Sie zum größeren übergeordneten Bild.

Abbildung A zeigt beispielhaft, wie die Ausgabe aussehen könnte:


Abbildung A

Ein Beispiel Screenshot

Und da haben Sie es – eine automatisch generierte Fotogalerie! Wenn Sie newimages in den Ordner kopieren, werden sie automatisch in der Galerieliste angezeigt.Ist das nicht ordentlich?

Hinweis: Sie können die in Schritt 3 erstellten Skripte in einem anderen Verzeichnis als dem mit Ihren Fotos platzieren, solange Sie daran denken, die $ dirvariable oben in jedem Skript mit dem richtigen Pfad zur Fotosammlung zu aktualisieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.