En este corto post de programación con PHP te mostraré cómo reducir la calidad de una imagen, comprimir una imagen o simplemente reducir el tamaño de una imagen.
Ciertamente esto no es comprimir, pues comprimir una imagen con PHP sería comprimirla para después verla en su estado original. Lo que haremos será más bien reducir su calidad o tamaño.
Para esto vas a necesitar la librería GD. Aquí puedes verificar si cuentas con ella.
Explicación general
Te mostraré un ejemplo, pero básicamente lo que tienes que hacer es obtener una imagen con imagecreatefromjpeg
o imagecreatefrompng
. Recuerda que la función que uses dependerá del formato de la imagen.
Una vez que ya has abierto la imagen (puede ser una imagen que el usuario haya subido, dentro de $_FILES
o una que ya exista dentro del sistema de archivos) invoca a imagejpeg
o imagepng
para guardar la imagen. Estas funciones tienen 3 argumentos:
- Recurso de la imagen, algo obtenido con
imagecreafrompng
oimagecreatefromjpeg
- Nombre del archivo que se va a guardar
- Calidad
Recuerda que igualmente podrías mostrar la imagen en el navegador pasando null
como nombre del archivo; verás en los ejemplos.
El argumento importante aquí es la calidad, que va desde 0 hasta 100. Entre mayor sea el número, mayor la calidad pero así también el peso. Pero bueno, vayamos al ejemplo.
Ejemplo 1: comprimir imagen y guardar
Vamos a ver el primer ejemplo. En este caso vamos a tomar una imagen existente en el sistema de archivos, obtenerla y guardarla con el tamaño reducido, todo esto usando PHP.
En mi ejemplo uso una calidad de 20, así que el peso de la imagen se reduce de 329 KB a 52.9 KB.
Segundo ejemplo: reducir tamaño de imagen con PHP y mostrar en el navegador
Como dije anteriormente, puedes mostrar la imagen comprimida en el navegador para que el usuario pueda verla o descargarla:
Probando ejemplo
Solo para terminar el post te mostraré la salida del navegador cuando indico la calidad en 20:

Con eso terminamos por hoy. Recuerda que puedes leer más sobre PHP en este enlace.