Escalado de imágenes con PHP

Facebooktwittergoogle_pluslinkedinmailFacebooktwittergoogle_pluslinkedinmail

Escalar imágenes con PHP es una necesidad que se nos presenta a menudo. Bien sea que la imagen esté ya almacenda en el servidor, o que proceda de un fichero enviado por un usuario a través de un formulario, es muy habitual que tengamos que crear una miniatura de la imagen. Las miniaturas pueden estar en el mismo directorio que las imágenes originales, o en un directorio especifico. Esto se hace para, por ejemplo, poder mostrar al usuario una colección de miniaturas y, cuando pulse sobre alguna de ellas, se le mostrará la imagen origirnal.

githubPuedes descargar la clase PHP para reescalado de imagenes, totalmente actualizada, desde https://github.com/eldesvandejose/images-thumbnail

Sacar una copia reescalada de una imagen implica varios problemas que hay que resolver. Tenemos que determinar cuales serán las dimensiones máximas de la miniatura, cual será su peso máximo, y sacar una copia escalada que cumpla estos requisitos, manteniendo las proporciones de la imagen original y, en la medida de lo posible, la máxima calidad o, al menos, una calidad aceptable.

La clase class.reescalado.php ha sido creada con esta finalidad. Su listado es el siguiente:

Su uso es muy simple. En primer lugar tenemos que importarla en nuestro script, desde luego.

require ("class.reescalado.php");

Si estuviera en un directorio diferente, especificaremos el mismo en la importación, cómo es normal.

A continuación, estableceremos las propiedades de clase. En algunas, nos valdrá el valor por defecto. En otras, deberemos cambiarlo. Las propiedades de clase que se pueden establecer son las siguientes:

PROPIEDAD USO VALOR POR DEFECTO
reescalado::$prefijoDeReescalados Un prefijo que se antepondrá al nombre de la imagen en el reescalado. Así, si establecemos RESIZED_ y la imagen original se llama foto.jpg, la miniatura se llamará RESIZED_foto.jpg. Podemos poner una cadena en blanco, siempre que nos aseguremos de que las miniaturas se grabarán en una ruta diferente a los originales. RESIZED_
reescalado::$rutaDeOriginales La ruta en la que están las imágenes originales, relativa al script en el que estamos trabajando, no al directorio dónde esté la clase.  
reescalado::$rutaDeReescalados La ruta dónde se grabarán las miniaturas, relativa al script en el que estamos trabajando, no al directorio dónde esté la clase. Si dejamos esto cómo una cadena vacía, las miniaturas se grabarán en la misma ruta que estén los originales, por lo que deberemos establecer la propiedad reescalado::$prefijoDeReescalados para evitar conflictos.  
reescalado::$anchuraMaxDeReescalados La anchura máxima que deberán tener las miniaturas, en píxeles (1). 150
reescalado::$alturaMaxDeReescalados La altura máxima que deberán tener las miniaturas, en píxeles (1). 100
reescalado::$pesoMaxDeReescalados El peso máximo, en bytes que deberán tener las miniaturas. 50000

(1) Estos parámetros están pensados para una imagen apaisada, es decir, más ancha que alta. Si la imagen es vertical (más alta que ancha), la clase lo detecta automáticamente, manteniendo las proporciones y la orientación originales.

Una vez establecidas las variables de clase, llamamos al constructor, pasándole, cómo argumento, el nombre del fichero de la imagen que queremos miniaturizar, sin especificar la ruta, ya que esta ya la hemos establecido en las variables de clase. Sería algo así cómo esto:

$objetoImagen = new reescalado("imagen_grande.jpg");

CONSIDERACIONES IMPORTANTES

Debemos tener precaución con los siguientes detalles:

La imagen original debe existir en la ruta que hayamos especificado, y ser legible.

La ruta de las minituras debe existir y debemos tener permiso de escritura.

Las imágenes deben ser en formato .jpg, .gif o .png, que son los que se emplean en la web. Otro formato producirá un error.

Normalmente, las variables de clase se establecen una sóla vez en el script que haga uso de esta herramienta. Despues sólo deberemos crear un objeto por cada imagen que queramos miniaturizar.

githubPuedes descargar la clase PHP para reescalado de imagenes, totalmente actualizada, desde https://github.com/eldesvandejose/images-thumbnail

 

     

Un comentario:

  1. Pingback: PHP-TUT-24 Configuración de PHP. Directivas y extensiones. » Recursos para programadores

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *