enero 6, 2022

Cree una galería de fotos dinámica con PHP en tres pasos

Si tiene una cámara digital, probablemente también tenga una galería de fotos digitales de momentos memorables. Y si tienes una galería de fotos digital, es casi seguro que te has topado con un problema muy común: organizar tus fotos para que puedan buscarse e indexarse fácilmente.

Es posible que no lo sepa, pero la mayoría de las cámaras digitales incorporan metadatos descriptivos automáticamente en los encabezados de las imágenes que crean. Estos encabezados, llamados encabezados de Archivo de imagen intercambiable(EXIF), contienen información sobre la marca y el modelo de la cámara, la hora y la fecha en que se tomó la foto, las especificaciones técnicas de la foto (velocidad de cierre, apertura, etc.) y una miniatura de la imagen. Además, muchos editores de imágenes le permiten complementar estos encabezados generados automáticamente con texto descriptivo propio, por ejemplo, «El primer juego de fútbol de Sally» o «Emborracharse en Malta».

Estoy seguro de que puedes ver a dónde voy con esto. Con un poco de imaginación y pensamiento creativo, es posible usar los encabezados generados por su cámara (y, si tiene el tiempo y la motivación, complementados por usted)para organizar y describir automáticamente su colección de fotos. Este artículo le mostrará cómo, usando las funciones EXIF de PHP.

Paso 1: Asegúrese de que su compilación PHP soporte EXIF

Para leer encabezados EXIF, su compilación PHP debe incluir soporte para el módulo EXIF. Puede comprobar si este soporte está habilitado, creando un script PHP que contenga el código que se muestra en la Lista A.

Listado A

<?php
phpinfo ();
?>

Vea el resultado de este script en su navegador Web y revise la lista de extensiones para ver si se incluye EXIF. Si lo es, pase al siguiente paso. Si no, necesitará activar las funciones EXIF de PHP, eitherby des-comentar la línea de extensión en php.ini (Windows) o compilar su compilación PHP con el argumento enable enable-exif (UNIX). Más información sobre cómo hacerlo está disponible en el sitio Web de PHP.

Paso 2: Mueva sus fotos a un solo directorio

A continuación,recopile todas sus fotos en un solo directorio en la raíz de documentos del servidor web. Este también es un buen momento para agregar sus propios comentarios descriptivos a cada imagen (aunque esto no es esencial). Una serie de buenas herramientas gratuitas y de shareware están disponibles para ayudarlo a hacer esto; eche un vistazo a Exifer para Windows o RoboPhoto.

Paso 3: Escribir código para leer encabezados de fotos y comentarios

El paso final es escribir los scripts PHP que extraerán datos EXIF de sus imágenes y generarán automáticamente una página Web con miniaturas, información técnica y enlaces a versiones más grandes de cada imagen. Hay dos guiones aquí: el primero, galería.php, (Ver Listado B) busca fotos y extrae encabezados EXIF de ellas, mientras que el segundo, miniatura.php, (Ver Listado C) es responsable de extraer la imagen en miniatura de cada foto.

Listado B-Aquí está el código para la galería.php

<html>
<head></head>
<body>
<table>
<?php
/ / define la ruta del directorio
di dir=».»;
// itera a través de los archivos
// buscar archivos Jpeg
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($archivo = readdir($dh)) != = false) {
if (preg_match («/.jpg/», file file)) {
// leer encabezados EXIF
ex exif = exif_read_data (file file, 0, true);
echo «<tr>»;
// obtener miniatura
// el enlace de la imagen completa
echo «<td valign=top><a href=$dir/$archivo><imgsrc=miniatura.php?archivo=$archivo></a><td>»;
echo «<td valign=top><tamaño de fuente=-1>»;
// obtener el nombre de archivo
echo «el Archivo: <b>» . ex exif . «< / b> < br/>»;
// obtener marca de tiempo
echo » Marca de tiempo:». ex exif . «<br/>»;
// obtener dimensiones de imagen
echo «Dimensiones:». ex exif . «x». ex exif . «<br/>»;
// obtenga la marca y el modelo de la cámara
echo » Cámara:». ex exif;
echo «</font></td>»;
echo «</tr>»;
}
}
closedir($dh);
}
}
?>
</cuadro>
</cuerpo>
</html>

Este script usa las funciones de directorio de PHP para recuperar la lista a de todas las imágenes JPEG en el directorio, y luego usa la función exif_read_data() para leer las cabeceras EXIF de cada imagen como anarray. Cada imagen se muestra como una miniatura utilizando la información proporcionada por la miniatura.php, y eachthumbnail está hipervinculado a su imagen padre. La información relevante (nombre de imagen, dimensiones, marca de tiempo y modelo de cámara) se extrae de estos encabezados y se muestra con cada miniatura.

Si ha utilizado un editor EXIF para agregar sus propios comentarios a las imágenes, puede acceder a los elementos de matriz apropiados para recuperar y mostrar esa información también. Mire dentro de la matriz ex exif con print_r (ex exif) para averiguar la ruta de la matriz para sus metadatos personalizados.

Nota: Diferentes fabricantes de cámaras utilizan los encabezados EXIF de diferentes maneras. Si la salida del script de arriba parece que le falta alguna información, debe mirar dentro del array ex exif con print_r (ex exif) para averiguar exactamente cómo escribe su cámara los datos EXIF, y hacer los ajustes apropiados a las claves del array en el script de arriba (ListingB).

Listado C-Y aquí está el código para la miniatura.php

<?php
/ / define la ruta del directorio
di dir=».»;
image image = exif_thumbnail (di dir . «/» . header _GET);
header(«Content-Type: image/jpeg»);
echo image image;
?>

Este script es muy simple: recupera el nombre del archivo de imagen de la URL y usa la función exif_thumbnail() para extraer una miniatura de la imagen con nombre. Esta miniatura se envía al navegador, junto con un encabezado apropiado, para su visualización.

Coloque estos scripts en el directorio que contiene sus fotos y, a continuación, utilice su navegador web para acceder a la galería.php. Debería ver miniaturas de las imágenes en el directorio, junto con información descriptiva de cada una.Al hacer clic en una miniatura, llegará a la imagen principal más grande.

La figura A es un ejemplo de cómo podría ser la salida:


Figura A

Una captura de pantalla de ejemplo

Y ahí lo tienes, ¡una galería de fotos generada automáticamente! A medida que copie imágenes nuevas en la carpeta, se mostrarán automáticamente en la lista de la galería.¿No es genial?

Nota: Puede colocar los scripts creados en el paso 3 en un directorio diferente del que contiene sus fotos, siempre y cuando recuerde actualizar la variable dir dirvariable en la parte superior de cada script con la ruta correcta a la fotocolección.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.