Generar Thumbnails


Prohibida la reproducción total o parcial de este artículo sin el previo consentimiento de Webtutoriales.com

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

Detalles sobre este artículo

Enviado por WebTutoriales:
Fecha Publicación: 26.09.2007
Este artículos ha sido visto 4.170 veces.
Vota este artículo:

  • Currently 4.40/5
  • 1
  • 2
  • 3
  • 4
  • 5

4.4/5 de 5 votos

Otros Artículos Relacionados

Enlaza Este Artículo Desde tu Web

El enlace se verá así: Generar Thumbnails

Comentarios

Si tienes algún comentario o sugerencia, utiliza el formulario. Enviar Comentario

  COMENTARIOS
Posteado por alex, el 30.12.2007, 06:48
Gran tutorial, muyy util, excepto que podrian ampliarlo explicando como integrarlo en un upload de fotos, de manera que se cuelgue la foto que el usuario quiera, y luego sea redimensionada.