Generar Thumbnails

Script para crear imágenes en miniatura con la librería GD.

Generar Imágenes en Miniatura

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.

Código por Partes

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.

Script Completo

$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);