janvier 6, 2022

Créer une galerie de photos dynamique avec PHP en trois étapes

Si vous avez un appareil photo numérique, vous avez probablement aussi une galerie de photos numériques de moments mémorables. Et si vous avez une galerie de photos numériques, vous êtes presque sûr d’avoir rencontré un problème très commun: organiser vos photos afin qu’elles puissent être facilement recherchées et indexées.

Maintenant, vous ne le savez peut-être pas, mais la plupart des appareils photo numériques intègrent automatiquement des métadonnées descriptives dans les en-têtes des images qu’ils créent. Ces en-têtes, appelés en-têtes EXIF (EXchangeable Image File), contiennent des informations sur la marque et le modèle de l’appareil photo, l’heure et la date à laquelle la photo a été prise, les spécifications techniques de la photo (vitesse d’arrêt, ouverture, etc.) et une vignette de l’image. De plus, de nombreux éditeurs d’images vous permettent de compléter ces têtes générées automatiquement avec votre propre texte descriptif – par exemple, « Le premier match de football de Sally » ou « Se saouler à Malte ».

Je suis sûr que vous pouvez voir où je vais avec cela. Avec un peu d’imagination et de créativité, il est possible d’utiliser les en-têtes générés par yourcamera (et, si vous en avez le temps et la motivation, complétés par vous) pour organiser et décrire automatiquement votre collection de photos. Cet article vous montrera comment, en utilisant les fonctions EXIF de PHP.

Étape 1: Assurez-vous que votre build PHP prend en charge EXIF

Afin de lire les en-têtes EXIF, votre build PHP doit inclure le support du module EXIF. Vous pouvez vérifier si ce support est activé, en créant un script PHP contenant le code indiqué dans la liste A.

Liste A

<?php
phpinfo();
?>

Affichez la sortie de ce script dans votre navigateur Web et consultez la liste des extensions pour voir si EXIF est inclus. Si c’est le cas, passez à l’étape suivante. Sinon, vous devrez activer les fonctions EXIF de PHP, soit en désommant la ligne d’extension en php.ini (Windows) oucompiler votre build PHP avec l’argumentenableenable-exif (UNIX). Plus d’informations sur la façon de procéder sont disponibles sur le site Web de PHP.

Étape 2: Déplacez vos photos dans un répertoire unique

Ensuite, rassemblez toutes vos photos dans un répertoire unique sous le serveur Web documentroot. C’est également le bon moment pour ajouter vos propres commentaires descriptifs à chaqueimage (bien que ce ne soit pas essentiel). Un certain nombre de bons shareware et outils gratuits sont disponibles pour vous aider à le faire; jetez un œil à Exifer pour Windows ou RoboPhoto.

Étape 3: Écrivez du code pour lire les en-têtes de photo et les commentaires

L’étape finale consiste à écrire les scripts PHP qui extrairont les données EXIF de vos images et généreront automatiquement une page Web avec des vignettes, des informations techniques et des liens vers des versions plus grandes de chaque image. Il y a deux scripts ici: le premier, galerie.php, (Voir Liste B) recherche les photos et en extrait les en-têtes EXIF, tandis que le second, la vignette.php, (Voir la liste C) est responsable de l’extraction de l’image miniature dechaque photo.

Liste B – Voici le code de la galerie.php

<html>
<head></head>
<body>
<table>
<?php
// définit le chemin du répertoire
$dir= ». »;
// parcourir les fichiers
// rechercher des fichiers JPEG
if(is_dir(didir)) {
if(dhdh= opendir(didir)) {
while((filefile=readdir(dhdh))!== false) {
if(preg_match(« /.jpg/ »,filefile)) {
// lire les en-têtes EXIF
$exif= exif_read_data(filefile, 0, true);
echo »< tr > »;
// obtenir la vignette
// lien vers l’image complète
echo »< td valign=top > < a href=didir/filefile > < imgsrc=vignette.php ?file=filefile > < /a > < td > »;
echo »< td valign=top > < taille de la police=-1> »;
// obtenez le nom de fichier
echo « Fichier: < b > ». exexif. « </b > < br/> »;
// obtenez l’horodatage
echo « Horodatage: ». exexif. « < br/> »;
// obtenez les dimensions de l’image
echo « Dimensions: ». exexif. « x ». exexif. « < br/> »;
// obtenez la marque et le modèle de la caméra
echo « Camera: ». exexif;
echo »</ font > </td > »;
echo » </tr> »;
}
}
closedir (dhdh);
}
}
?>
</ tableau>
</ corps>
</ html >

Ce script utilise les fonctions de répertoire de PHP pour récupérer une liste de toutes les images JPEG du répertoire, puis utilise la fonction exif_read_data() pour lire les en-têtes EXIF de chaque image en tant qu’anarray. Chaque image est affichée sous forme de vignette à l’aide des informations fournies par la vignette.php, et eachthumbnail est lui-même lié à son image parente. Les informations pertinentes — nom de l’image, dimensions, horodatage et modèle de caméra — sont extraites de ces têtes et affichées avec chaque vignette.

Si vous avez utilisé un éditeur EXIF pour ajouter vos propres commentaires aux images, vous pouvez accéder aux éléments de tableau appropriés pour récupérer et afficher également ces informations. Regardez à l’intérieur du tableau $exif avec print_r(exexif) pour découvrir le chemin du tableau pour vos métadonnées personnalisées.

Remarque: Différents fabricants d’appareils photo utilisent les en-têtes EXIF de différentes manières. Si la sortie du script ci-dessus semble manquer des informations, vous devriez regarder dans le tableauexexif avec print_r(exexif) pour savoir exactement comment votre caméra écrit les données EXIF et effectuer les ajustements appropriés aux clés du tableau dans le script ci-dessus (ListingB).

Liste C – Et voici le code de la vignette.php

<?php
// définit le chemin du répertoire
$dir= ». »;
imageimage=exif_thumbnail(didir. « / » . echo_GET);
en-tête (« Type de contenu: image/jpeg »);
echoimageimage;
?>

Ce script est très simple — il récupère le nom du fichier image à partir de l’URL et utilise la fonction exif_thumbnail() pour extraire une vignette de l’image nommée. Cette vignette est ensuite envoyée à thebrowser, avec un en-tête approprié, pour l’affichage.

Placez ces scripts dans le répertoire contenant vos photos, puis utilisez votre navigateur Web pour accéder à la galerie.php. Vous devriez voir les vignettes des images dans le répertoire, ainsi que des informations descriptives sur chacune.Cliquer sur une vignette devrait vous amener à l’image parente plus grande.

La figure A est un exemple de vue d’ensemble de ce à quoi pourrait ressembler la sortie:


Figure A

Un exemple de capture d’écran

Et là, vous l’avez – une galerie de photos générée automatiquement! Lorsque vous copiez de nouvelles images dans le dossier, elles apparaîtront automatiquement dans la liste de la galerie.N’est-ce pas soigné?

Remarque: Vous pouvez placer les scripts créés à l’étape 3dans un répertoire différent de celui contenant vos photos, tant que vous vous souvenez de mettre à jour ledirdirvariable en haut de chaque script avec le chemin correct vers la photocollection.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.