Crea una galleria fotografica dinamica con PHP in tre passaggi
Se Hai una fotocamera digitale, probabilmente hai anche una galleria fotografica digitale di momenti memorabili. E se hai una photogallery digitale, sei quasi sicuro di aver incontrato un problema molto comune: organizzare le tue foto in modo che possano essere facilmente ricercate e indicizzate.
Ora, potresti non saperlo, ma la maggior parte delle fotocamere digitali incorpora automaticamente metadati descrittivi nelle intestazioni delle immagini che creano. Queste intestazioni, chiamate intestazioni EXIF(EXchangeable Image File), contengono informazioni sulla marca e sul modello della fotocamera, sull’ora e sulla data in cui è stata scattata la foto, le specifiche tecniche della foto (velocità di scatto, apertura e così via) e una miniatura dell’immagine. Inoltre, molti editor di immagini ti consentono di integrare queste intestazioni generate automaticamente con un testo descrittivo, ad esempio “Sally’s first footballgame” o “Getting drunk in Malta”.
Sono sicuro che puoi vedere dove sto andando con questo. Con un po ‘ di immaginazione e pensiero creativo, è possibile utilizzare le intestazioni generate dalla tua fotocamera (e, se hai il tempo e la motivazione, ulteriormente integrate da te)per organizzare e descrivere automaticamente la tua collezione di foto. Questo articolo ti mostrerà come, usando le funzioni EXIF di PHP.
Passo 1: Assicurati che la tua build PHP supporti EXIF
Per leggere le intestazioni EXIF, la tua build PHP deve includere il supporto per EXIFmodule. È possibile verificare se questo supporto è abilitato, creando uno script PHP contenente il codice mostrato nel listato A.
Elenco A
<?php
phpinfo ();
?>
Visualizza l’output di questo script nel tuo browser Web e rivedi l’elenco di estensioni per vedere se EXIF è incluso. Se lo è, passare al passaggio successivo. In caso contrario, è necessario attivare le funzioni EXIF di PHP, sia dis-commentando la linea di estensione in php.ini (Windows) orecompiling la tua build PHP con l’argomento enable enable-exif (UNIX). Maggiori informazioni su come farlo sono disponibili sul sito Web PHP.
Fase 2: Spostare le foto in una singola directory
Quindi,raccogliere tutte le foto in una singola directory sotto il server Web documentroot. Questo è anche un buon momento per aggiungere i propri commenti descrittivi a eachimage (anche se questo non è essenziale). Un certo numero di buoni shareware e freewaretools sono disponibili per aiutarti a farlo; dai un’occhiata a Exifer per Windows o RoboPhoto.
Fase 3: Scrivi codice per leggere le intestazioni e i commenti delle foto
Il passo finale è scrivere gli script PHP che estrarranno i dati EXIF dalle tue immagini e genereranno automaticamente una pagina Web con miniature, informazioni tecniche e collegamenti a versioni più grandi di ogni immagine. Ci sono due sceneggiaturequi: il primo, galleria.php, (vedi l’elenco B) cerca le foto ed estrae le intestazioni EXIF da esse, mentre la seconda, thumbnail.php, (vedi l’elenco C) è responsabile dell’estrazione dell’immagine in miniatura daogni foto.
Elenco B-Ecco il codice per la galleria.php
<html>
<head></head>
<body>
<table>
<?php
/ / define directory path
di dir = “.”;
// itera tra i file
/ / cerca JPEG
if (is_dir (di dir)) {
if (d dh = opendir (open dir)) {
while ((file file = readdir (d dh)) != = false) {
if (preg_match (“/.jpg/”, file file)) {
/ / leggi le intestazioni EXIF
ex exif = exif_read_data (file file, 0, true);
echo ” < tr>”;
// get thumbnail
// link all’immagine completa
echo “<td valign=top><a href=di dir/file file> <imgsrc=thumbnail.php?file = file file></a><td >”;
echo ” < td valign = top><dimensione carattere=-1>”;
// ottieni nome file
echo ” File: <b >”. ex exif . “< / b> < br/>”;
// ottieni timestamp
echo ” Timestamp:”. ex exif . “< br/>”;
// ottieni dimensioni immagine
echo ” Dimensions:”. ex exif . “x”. ex exif . “< br/>”;
// ottenere fotocamera marca e modello
echo ” Camera:”. ex exif;
echo ” < / font> < / td>”;
echo ” < /tr>”;
}
}
closedir (d dh);
}
}
?>
</tabella>
</corpo>
</html>
Thisscript utilizza PHP directory di funzioni per recuperare unelenco di tutte le immagini JPEG nella directory, e quindi utilizza il exif_read_data() funzione per leggere le intestazioni EXIF da ogni immagine come anarray. Ogni immagine viene visualizzata come una miniatura utilizzando le informazioni fornite da thumbnail.php, e eachthumbnail è di per sé collegato alla sua immagine genitore. Le informazioni rilevanti-imagename, dimensioni, timestamp e modello di fotocamera – vengono estratte da queste intestazioni e visualizzate con ogni miniatura.
Se hai utilizzato un editor EXIF per aggiungere i tuoi commenti alle immagini, puoi accedere agli elementi dell’array appropriati per recuperare e visualizzare anche tali informazioni. Guarda all’interno dell’array ex exif con print_r (ex exif) per scoprire il percorso dell’array per i metadati personalizzati.
Nota: Diversi produttori di fotocamere utilizzano le intestazioni EXIF in modi diversi. Se l’output dello script sopra sembra mancare di alcune informazioni, dovresti guardare all’interno dell’array ex exif con print_r (ex exif) per scoprire esattamente come la tua fotocamera scrive i dati EXIF e fare aggiustamenti appropriati alle chiavi dell’array nello script sopra (ListingB).
Elenco C-Ed ecco il codice per thumbnail.php
<?php
/ / define directory path
di dir = “.”;
image image = exif_thumbnail (di dir . “/” . header _GET);
header (“Content-Type: image / jpeg”);
echo image image;
?>
Thisscript è molto semplice: recupera il nome del file immagine dall’URL e utilizza la funzione exif_thumbnail() per estrarre una miniatura dall’immagine denominata. Questa miniatura viene quindi inviata al browser, insieme a un’intestazione appropriata, per la visualizzazione.
Inserisci questi script nella directory contenente le tue foto, quindi usa il tuo browser Web per accedere alla galleria.PHP. Dovresti vedere le miniature dile immagini nella directory, insieme a informazioni descrittive su ciascuna.Facendo clic su una miniatura si dovrebbe prendere l’immagine padre più grande.
La figura A è un esempio di come potrebbe apparire l’output:
Figura A
Uno screenshot di esempio
Andthere lo avete—una galleria fotografica generata automaticamente! Come si copia newimages nella cartella, essi verranno visualizzati automaticamente nella lista galleria.Non e ‘ carino?
Nota: Puoi inserire gli script creati nel passaggio 3 in una directory diversa da quella contenente le tue foto, purché tu ricordi di aggiornare dir dirvariable nella parte superiore di ogni script con il percorso corretto per la raccolta foto.