Ejercicio Básico 34: Cómo crear una galería de imágenes con PHP
Ejercicio Básico 34: Cómo crear una galería de imágenes con PHP

AVISO: Esta entrada tiene más de dos años desde su publicación. Es posible que el contenido esté desactualizado.

Si la cosa fuese correlativa, este sería el ejercicio básico 33 de PHP. Pero como me hizo más gracia este ejercicio, me puse con el en un rato libre que he tenido hoy. Próximamente publicaré el 33, pero vamos, tampoco hay prisa, ya que ese ejercicio no es más que la continuación del ejercicio 32 que ya he publicado y la verdad es que me resultan muy aburridas las segundas partes. Por el momento vamos a por el ejercicio número 34 en el que montaremos de manera sencilla una galería de imágenes.

El ejercicio a desarrollar hoy será algo como que vamos a hacer una página Web que contenga las fotografías de un viaje para mostrárselo a quien nos venga en gana. Nuestro programa debe escanear un directorio que contiene fotografías. Va a generar dinámicamente una página Web que las muestre como si tratase una galería de fotos.

Notas: Hay que tener en cuenta los errores que se puedan producir por no existir el directorio, no haber imágenes, etc… Las extensiones de archivo permitidas son: ‘gif’, ‘jpg’, ‘jpeg’, ‘tif’, ‘tiff’, ‘bmp’, ‘png’
Funciones que se pueden utilizar: file_exists, opendir, readdir, pathinfo, in_array, aun que yo no utilizo todas ellas, funciona perfectamente. Para compensarlo añado una función para generar una estructura de directorios.

Un ejemplo de lo que se consigue con el código que a continuación dejaré se puede ver haciendo click aquí. Una vez explicado el asunto del ejercicio, vamos al turrón del mismo.

El código para la creación de nuestra galería de imágenes con PHP:

<?php
	/**
	* Función que muestra la estructura de directorios tomando como referencia
         * el directorio que se le pasa como parámetro
	*/
	function obtener_estructura_directorios($ruta){
		
		// Se comprueba que realmente sea la ruta de un directorio
		if (is_dir($ruta)){
			// Abre el directorio que pasamos como parámetro
			$gestor = opendir($ruta);
			//Abrimos una lista
                        echo "<ul>";

			// Recorre todos los elementos del directorio
			while ($archivo = readdir($gestor))  {
				
				$ruta_completa = $ruta . "/" . $archivo;

				// Se muestran todos los archivos y carpetas excepto "." y ".."
				if ($archivo != "." && $archivo != "..") {
					// Si es un directorio se recorre recursivamente
					if (is_dir($ruta_completa)) {
						echo "<li>" . $archivo . "</li>";
						obtener_estructura_directorios($ruta_completa);
					} else {
                                        // En caso de que no sea un directorio es un archivo
						echo "<li>" . $archivo . "</li>";
					}
				}
			}
			// Cierra el gestor de directorios
			closedir($gestor);
			echo "</ul>";
		} else {
			echo "No es una ruta de directorio valida<br/>";
		}
		
	}

	/**
	* Función que muestra las imagenes que hay en la ruta pasada como parametro
	*/
	function mostrar_imagenes($ruta){
             echo "<h1>...en el directorio ".pathinfo($ruta,PATHINFO_BASENAME)."...</h1><br>";
                $contador=0;
		// Se comprueba que realmente sea la ruta de un directorio
		if (is_dir($ruta)){
			// Abre un gestor de directorios para la ruta indicada
			$gestor = opendir($ruta);

			// Recorre todos los archivos del directorio
			while (($archivo = readdir($gestor)) !== false)  {
				// Solo buscamos archivos sin entrar en subdirectorios
				if (is_file($ruta."/".$archivo)) {
                                     if (preg_match( "/.gif$/", $archivo) || 
                                             preg_match("/.jpg$/", $archivo) || 
                                             preg_match("/.png$/", $archivo) || 
                                             preg_match("/.jpeg$/",$archivo) || 
                                             preg_match ("/.tif$/",$archivo) ||
                                             preg_match ("/.tiff$/",$archivo) || 
                                             preg_match("/.bmp$/",$archivo)){
                                        //Imprimimos la imagen con un ancho de 200px
					echo "<img src='".$ruta."/".$archivo."' width='200px' alt='".$archivo."' title='".$archivo."'>&nbsp;&nbsp;";
                                        //contador de imágenes
                                        $contador++;
                                     }
                                }
			
			}

                        echo "<br> <h1>... encontramos ".$contador." imágenes</b></h1>";    
			// Cierra el gestor de directorios
			closedir($gestor);
		} else {
			echo "No es una ruta de directorio valida<br/>";
		}
	}
?>

<html>
<head>
	<title>Ejercicio 34</title>
        <meta charset="UTF-8">
</head>
<body>
	<div>
            <h2><b>Estructura de directorios</b></h2>
                <!--llamamos a la funcion obtener_estructura_directorios del directorio actual-->
		<?php 
                obtener_estructura_directorios("./"); ?>
	</div>

	<div>
            <h2><b>Imagenes </b></h2>
                <!--llamamos a la función mostrar imagenes en el directorio img-->
		<?php
                mostrar_imagenes("img"); ?>
	</div>
    <h6>Las imágenes TIF y TIFF no se visualizan en el navegador. Se puede usar un plugin como <a href="http://www.alternatiff.com" title="AlternativeTiff">alternativetif</a><br>
        para poder verlas en el navegador</h6>
</body>
</html>

Y con esto doy por finalizado el este post. En el se ha podido ver hemos creado una galería de imágenes bastante funcional. Todo de manera fácil y sencilla con PHP y un poquito de HTML. Próximamente iré publicando más posts sobre este mundillo del PHP.







¿Qué te ha parecido este post?

¡Haz clic en una estrella para calificarla!

Puntuación media 0 / 5. Recuento de votos: 0

¡No hay votos hasta ahora! Sé el primero en calificar esta publicación.

No te pierdas otros artículos ...

¡Síguenos en las redes sociales!

¡Lamentamos que esta publicación no te haya sido útil!

¡Permítanos mejorar esta publicación!

¿Cuéntanos cómo podemos mejorar esta publicación?

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.