Script para crear imágenes en miniatura con la librería GD.
En este tutorial trataremos de explicar cómo crear previsualizaciones de imágenes (thumbnails) de un directorio y luego guardarlas en otro con PHP.
Es necesario tener instalada la Librería GD en PHP para poder tratar y redimensionar las imágenes.
Al final del artículo hemos escrito el código completo. Pero antes veamos por partes que hace el programa.
Primero definiremos algunas variables. El ancho que tendrá la imagen de previsualización, el directorio que contiene las imágenes, las extensiones de imágenes que convertiremos y el directorio donde queremos guardar las previsualizaciones.
$ancho_preview = 50; $directorio = ”./imagenes/”; $extensiones = array(“gif”,“jpg”,“png”); $directorioGuardar = ”./previews/”;
A continuación haremos algunas comprobaciones básicas para verificar que el directorio existe y que se puede abrir.
if(is_dir($directorio) && $dir = opendir($directorio)){
Si todo es correcto entraremos dentro del bucle para leer los archivos que contiene. Para cada archivo miraremos su extensión.
while (($nombre_archivo = readdir($dir)) !== false){$archivo = pathinfo($directorio.$nombre_archivo); if (in_array(strtolower($archivo['extension']),$extensiones)) { if(strtolower($archivo['extension'])=="gif"){$img = imagecreatefromgif($directorio.$nombre_archivo); }else if(strtolower($archivo['extension'])=="jpg"){$img = imagecreatefromjpeg($directorio.$nombre_archivo); }else if(strtolower($archivo['extension'])=="png"){$img = imagecreatefrompng($directorio.$nombre_archivo);}
Finalmente haremos una copia de la imagen original usando la función imagecopyresized*** con las nuevas dimensiones, y luego guardaremos el archivo de imagen en la carpeta adecuada.
$ancho_preview = 50;$directorio = "./imagenes/";$extensiones = array("gif","jpg","png");$directorioGuardar = "./previews/";
if(is_dir($directorio) && $dir = opendir($directorio)){
while (($nombre_archivo = readdir($dir)) !== false){$archivo = pathinfo($directorio.$nombre_archivo); if (in_array(strtolower($archivo['extension']),$extensiones)) { if(strtolower($archivo['extension'])=="gif"){$img = imagecreatefromgif($directorio.$nombre_archivo); }else if(strtolower($archivo['extension'])=="jpg"){$img = imagecreatefromjpeg($directorio.$nombre_archivo); }else if(strtolower($archivo['extension'])=="png"){$img = imagecreatefrompng($directorio.$nombre_archivo);}
$ancho = imagesx($img); $altura = imagesy($img);
$ancho_nuevo = $ancho_preview; $nueva_altura = floor($altura\*($ancho_preview/$ancho));
$tmp_img = imagecreatetruecolor($ancho_nuevo,$nueva_altura);
imagecopyresized($tmp_img,$img,0,0,0,0,$ancho_nuevo,$nueva_altura,$ancho,$altura);
if(strtolower($archivo['extension'])=="gif"){ imagegif( $tmp_img,$directorioGuardar.$nombre_archivo); }else if(strtolower($archivo['extension'])=="jpg"){ imagejpeg( $tmp_img,$directorioGuardar.$nombre_archivo); }else if(strtolower($archivo['extension'])=="png"){ imagepng( $tmp_img,$directorioGuardar.$nombre_archivo); } }
}}closedir($dir);