Crea thumbnails con php

Por el 22 de febrero de 2007

en: Programacion

Para hacer funcionar este script necesitaremos la librería GD y por supuesto php instalados en tu servidor, con este script funcionando podremos crear thumbnails (previsualizaciones de menor tamaño de una imagen original).

Este script constará de dos funciones, la primeraescaneará un directorio en busca de cualquier imagen en formato “.jpg”, para cada una de las búsquedas se crea un thumbnailen un directorio con la ayuda de la librería GD, la segunda función crea un archivo HTML en el mismo directorio en el que se encuentra el script, esta página contendrá todas las imágenes (versión thumbnail) y el correspondiente enlace a la imagen original. La utilidad de este script es muy sencilla con una cuantas mejoras puede convertirse en una buena galería para nuestras imágenes preferidas.

Primera Parte

El código que viene a continuación es una función llamada crearthumb a la que tendremos que dar tres parametros, los dos primeros parámetros corresponden a las rutas de los direcorios que contendrán las imágenes originales y los thumbnails de estas. El tercer parametro es el ancho que queremos para nuestros thumbnails, si te preguntas por qué no hace falta el ancho la respuesta es sencilla porque de esa manera estariamos redimensionando las imágenes y no conservarían su aspecto original.

<?php
function crearthumb ( $pathToImages, $pathToThumbs, $thumbWidth )
{
// abrimos el directorio
$dir = opendir( $pathToImages );

// bucle en busca de archivos jpg
while (false !== ($fname = readdir( $dir ))) {
$info = pathinfo($pathToImages . $fname);
// continua unicamente si la imagen es jpg
if ( strtolower($info['extension']) == ‘jpg’ )
{
echo “Creando thumbnail para {$fname}
“;

// carag y devuelve las medidas de la imagen
$img = imagecreatefromjpeg( “{$pathToImages}{$fname}” );
$width = imagesx( $img );
$height = imagesy( $img );

// calcula el tamaño
$new_width = $thumbWidth;
$new_height = floor( $height * ( $thumbWidth / $width ) );

// crea una nueva imagen de manera temporal
$tmp_img = imagecreatetruecolor( $new_width, $new_height );

// copia y dedimensiona la nueva imagen en la temporal que hemos creado
imagecopyresized( $tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height );

// guarda el thumbnail en un archivo
imagejpeg( $tmp_img, “{$pathToThumbs}{$fname}” );
}
}
// cierra el directorio
closedir( $dir );
}
// llama a la funcion y pasa los parametros necesarios arriba explicados
// esta ruta devera ser la ruta relatica y no la absoluta
crearthumb (“upload/”,”upload/thumbs/”,100);
?>

Segunda Parte

En esta segunda parte pasaremos a crear la galería con una función llamada creargaleria que necesitará dos parámetros (la ruta relativa de las imágenes y sus thumbanils), la ejecución de esta función creará una página HTML que contendrá todos los thumbnails con los enlaces a sus imágenes originales.

<?php
function creargaleria ( $pathToImages, $pathToThumbs )
{
echo “Creando galeria…
“;

$output = “<html>”;
$output .= “<head><title>Previsualización</title></head>”;
$output .= “<body>”;
$output .= “<table cellspacing=\”0\” cellpadding=\”2\” width=\”500\”>”;
$output .= “<tr>”;

// abrir el directorio
$dir = opendir( $pathToThumbs );

$counter = 0;
// bucle dentro del directorio
while (false !== ($fname = readdir($dir)))
{
if ($fname != ‘.’ && $fname != ‘..’)
{
$output .= “<td valign=\”middle\” align=\”center\”><a href=\”{$pathToImages}{$fname}\”>”;
$output .= “<img src=\”{$pathToThumbs}{$fname}\” border=\”0\” />”;
$output .= “</a></td>”;

$counter += 1;
if ( $counter % 4 == 0 ) { $output .= “</tr><tr>”; }
}
}
// cerrar el directorio
closedir( $dir );

$output .= “</tr>”;
$output .= “</table>”;
$output .= “</body>”;
$output .= “</html>”;

// abrir archivo
$fhandle = fopen( “gallery.html”, “w” );
// escribimos el contenido en la variable $outputal archivo fwrite( $fhandle, $output );
// cerrar archivo
fclose( $fhandle );
}
// llamamos a la funcion creargaleria y le pasamos los parametros necesarios
creargaleria (“upload/”,”upload/thumbs/”);
?>

Cómo se puede ver es bastante sencillo el código necesario para crear los thumbnails, la gran mayoria de errores con este tipo de scripts vienen por una mala configuración de nuestro servidor y más en concreto con la librería GD, es altamente recomendable revisar los permisos de los directorios en caso de error.

Vía WebCheatSheet (Inglés)

Enlaces Relacionados

Seccion Programación (TuFunción)
Cachea tus páginas en 5 pasos (PHP)
Tutorial básico de AJAX
Diferencia entre PHP ASP y otros lenguajes de programación
Fácil sistema de autentificación de usuarios (PHP)
Tendencia de los lenguajes de programación
Bases de datos y PHP
Consejos para escribir código Javascript
Perl está muriendo
8 lenguajes de programación que deberías aprender
Escuchando mp3 desde Gmail
5 increibles aplicaciones Javascript
Crear un favicon.ico para tu Web
Fácil sistema de autentificación (login, password) PHP
Llamadas gratis con VoipBuster
Datos de seguridad en contraseñas
As you can see, adding on the fly generated thumbnails to your website with GD library and PHP is quite easy to accomplish.

Dejar un comentario