ElTicus.com

Programación, lenguajes y recursos para programadores

Tip
Como escalar una imagen utilizando PHP y las funciones de la librería GD
Redimensionar una imagen por código
Publicado por JL Fecha: 2007-01-25 00:03:25 Idioma: Español Tipo de documento: Tip

Como escalar una imagen utilizando PHP y las funciones de la librería GD

El siguiente código tiene como objeto cambiar el tamaño de una imagen por código en PHP.

La idea es poder tener imágenes de muy alta calidad y esas mismas publicarlas en el Web sin necesidad de hacer una copia más pequeña de las mismas.

La imágen resultante que sería mucho mas pequeña es la que se publicará y transferirá a través de la red a los usuarios finales.

A continuación se presenta la función que realiza el proceso de escalar las imágenes:

function thumbjpeg($imagen,$altura) 
{
  /* Lugar donde se guardarán los thumbnails respecto 
     a la carpeta donde está la imagen "grande". */

  $dir_thumb = "thumbs/";
  /* Prefijo que se añadirá al nombre del thumbnail. 
     Ejemplo:  "imagen1.jpg" -> "tn_imagen1.jpg" */

  $prefijo_thumb = "tn_".$altura."_";
  $camino_nombre=explode("/",$imagen);
  /* Aquí tendremos el nombre de la imagen. */
  $nombre=end($camino_nombre);
  /* Aquí la ruta especificada para buscar la imagen. */
  $camino=substr($imagen,0,strlen($imagen)-strlen($nombre));

  /* Intentamos crear el directorio de thumbnails, si no existiera previamente. */
  if (!file_exists($camino.$dir_thumb))
  mkdir ($camino.$dir_thumb, 0777) or die("No se ha podido crear el directorio $dir_thumb");

  /* Aquí comprobamos que la imagen que queremos crear no exista previamente */
  if (!file_exists($camino.$dir_thumb.$prefijo_thumb.$nombre)) 
  {
    $img = imagecreatefromjpeg($camino.$nombre) 
           or die("No se encuentra la imagen $camino$nombre<br>\n");

    /* miramos el tamaño de la imagen original... */
    $datos = getimagesize($camino.$nombre) 
             or die("Problemas con $camino$nombre<br>\n");

    /* intentamos escalar la imagen original a la medida que nos interesa */
    $ratio = ($datos[1] / $altura);
    $anchura = round($datos[0] / $ratio);

    /* esta será la nueva imagen reescalada */
    $thumb = imagecreatetruecolor($anchura,$altura);

    /* con esta función la reescalamos */
    imagecopyresized($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]);

    /* la salvamos con el nombre y en el lugar que nos interesa. */
    imagejpeg($thumb,$camino.$dir_thumb.$prefijo_thumb.$nombre);
  }
  return($camino.$dir_thumb.$prefijo_thumb.$nombre);
}

Los parámetros que recibe la función son la ruta de la imagen a escalar y el porcentaje que deberá quedar la imagen resultante.

Esta función tomará la imágen original llamada por ejemplo imagen1.jpg y nos producira una de menor tamaño llamada tn_imagen1.jpg (le antepone tn_ ). Además, la copia se colocará en una carpeta llamada /thumbs/ que se encontrará en la misma carpeta que las imágenes originales.

NOTA: dicha carpeta thumbs deberá crearse previamente y deberá tener los permiso de escritura correspondientes para el usuario de internet. (Si queremos facilitarnos la vida, podemos ponerle Control Total para Todos los usuarios, pero solo a esta carpeta)

La función nos regresa, si tiene éxito, la ruta de la imagen creada y la podemos utilizar para ponersela como parámetro a una etiqueta IMG de HTML.

Por ejemplo:

 /* LLamamos a la función para comprimir la imagen a un 30 por ciento del tamaño original */
 $imgchica=thumbjpeg_P("IMGS/EJEMPLO.jpg",50);

/* Publicamos la nueva imagen */
 echo "<img border=0 src='$imgchica'>";





Nadie ha puesto ningún comentario todavía


Haz un comentario sobre este tema
Nombre email (no se muestra)
comentario:
Escribe las 2 letras que ves aquí: Imagen anti-spam =




No hay comentarios

Artículos relacionados:
Recurso no clasificado Check de diseño código fuente Como ponerle un contador de visitas a tu sitio en menos de 5 minutos. Código fuente Como colocar un relojito en una página WEb y que se esté refrescando cada segundo. Recurso no clasificado Como imprimir la fecha en español utilizando PHP aunque el idioma del servidor sea el inglés. Código fuente Como construir una gráfica de barras con CSS y PHP
Tip Como mandar parámetros a una aplicación de Flash en Internet Explorer y Mozilla Código fuente Como dibujar un calendario en una página Web Truco Como generar un archivo XLS desde PHP Tip Como corregir la fecha de mi servidor si éste se encuentra en un uso horario diferente al mio Recurso no clasificado Huevos de Pascua (Easter Egg)
Código fuente Para imprimir la fecha en español utilizando PHP independientemente del lenguaje del servidor (Utilizando ARRAYS) Truco Como generar un archivo .DOC de WORD desde PHP Truco Como generar un archivo .DOC/.RTF de WORD desde PHP (Incluyendo tablas) Código fuente Como cambiar el tamaño de una imagen JPG sin que esta se deforme. Truco Ejemplo práctico de las funciones de expresiones regulares: Como identificar una dirección email dentro de un archivo de texto
Código fuente Programa en PHP que convierte una cantidad dada como un número a su equivalente en letra Código fuente Como convertir una fecha de Lenguaje Natural a tipo DATE código fuente Las tablas de multiplicar en PHP Truco Como alternar colores en una tabla fácilmente código fuente Generar una tabla HTML desde una Base de Datos MYSQL
Recurso no clasificado Aprendiendo MySQL con PHP