Si tienes suficientes imágenes en tu ordenador y están ocupando demasiado espacio, sin duda es posible reducir su tamaño incluso sin perder calidad. Esto también puede ser muy útil a la hora de subir imágenes al almacenamiento en la nube.
JPEG y PNG son los formatos de imagen más comunes en Internet, por lo que podrá optimizar casi todas las imágenes.
Existe una utilidad llamada jpegoptim, una herramienta de línea de comandos que puede utilizarse para comprimir imágenes JPEG, JPG y JFIF sin pérdida de calidad. La utilidad optimiza las imágenes basándose en tablas Huffman. El algoritmo JPEG utiliza la compresión tal cual, pero esta compresión se consigue con pérdida de calidad, y aquí podemos optimizar el tamaño sin cambiar la imagen.
Para instalar la utilidad en Ubuntu, Debian y distribuciones basadas, ejecute:
$ sudo apt install jpegoptim
En Fedora, Red Hat, CentOS y otras distribuciones basadas en ellas las cosas son un poco más complicadas, tendrás que añadir primero el repositorio epel-release. Puedes hacerlo con un comando como este:
$ sudo yum install epel-release
O:
$ sudo dnf install epel-release
Luego puedes instalar jpegoptim desde el repositorio que acabas de añadir:
$ sudo yum install jpegoptim
O:
$ sudo dnf install jpegoptim
Veamos cómo utilizar jpegoptim. Usar la utilidad de compresión de imágenes de linux es muy fácil. Todo lo que necesitas hacer es ejecutar el programa y pasarle un nombre de archivo. Esta es la sintaxis:
$ jpegoptim optiona file_name.jpeg
Veamos las opciones de la utilidad:
-d
- especificar la carpeta en la que guardar las imágenes terminadas;-f
- optimización forzada;-m
- indicador de calidad, cancela la compresión sin pérdidas y establece el nivel de calidad de 0 a 100, cuanto más mejor;-n
- no realiza la optimización real, sólo muestra el resultado;-S
- establece el tamaño de la imagen terminada, puede especificarse en porcentaje o kilobytes;-o
- reemplazar el archivo fuente;-p
- guardar marcas de tiempo;-P
- guardar los derechos del archivo.Veamos cómo optimizar imágenes en linux con jpegoptim. Primero, veamos el tamaño original:
$ du image.jpg
A continuación hacemos la optimización más sencilla:
$ jpegoptim image.jpg
Luego miramos de nuevo el tamaño:
$ du image.jpg
Como puedes ver, la compresión jpg ha funcionado, y abriendo la imagen en cualquier programa gráfico no habrá ninguna diferencia o degradación en la calidad, la imagen original y la terminada serán idénticas. A la izquierda la optimizada, a la derecha la original:
Si lo desea, puede comprimir la imagen hasta un cierto tamaño, pero entonces no será sin pérdidas:
$ jpegoptim --size=250k image.jpeg
La imagen se comprimirá, pero la calidad se deteriorará notablemente. Si hay muchas imágenes, puede utilizar muy fácilmente la compresión por lotes, sólo tiene que ir a la carpeta con las imágenes y luego ejecutar el comando de compresión especificando una máscara en lugar de un archivo, por ejemplo:
$ cd images/
jpegoptim *.jpg
También puedes listar más de una imagen a la vez:
$ jpegoptim image1.jpg image2.jpg
Para optimizar todas las imágenes de una carpeta determinada, puede utilizar el comando xargs junto con find. Por ejemplo, comprimir todas las imágenes de la carpeta actual con mover a la carpeta ~/comprimido:
$ find . -name "*.jpg" | xargs jpegoptim -d ~/compressed -p
Eso es todo, ahora ya sabes cómo comprimir imágenes jpg en Linux. A continuación, hablaremos de cómo comprimir png. Esto también es muy sencillo.
PNG o Portable Network Graphics es un formato de imagen de mapa de bits diseñado para sustituir al imperfecto formato GIF en términos de compresión y reproducción del color. El tamaño de las imágenes PNG puede variar mucho en función de varios factores como la profundidad de color, el entrelazado, el filtro de compresión anterior, el algoritmo de compresión utilizado, etc.
OptiPNG es una utilidad de consola que permite optimizar las imágenes PNG. A saber, comprimir el tamaño, recuperar metadatos, comprobar la integridad, etc. Con OptiPNG puede comprimir archivos sin pérdida de calidad, al igual que hicimos con el formato Jpeg.
Si usas Ubuntu, el programa está en los repositorios oficiales y puedes instalarlo muy fácilmente. Para instalar optipng en Debian, Ubuntu y derivados escribe:
$ sudo apt install optipng
En Red Hat, CentOS o Fedora se hace exactamente igual, sólo que con un gestor de paquetes diferente:
$ sudo yum install optipng
O:
$ sudo dnf install optipng
La sintaxis de la utilidad es muy sencilla. Se puede utilizar exactamente de la misma manera que jpegoptim:
$ optipng ioptions file_name.png
Veamos las opciones de la utilidad:
-backup
- guardar copias de los archivos modificados;-dir
- carpeta donde escribir los archivos;-force
- forzar la escritura del archivo saliente;-out
- escribir archivo saliente
en el archivo especificado;-simulate
- no realizar ninguna acción, sólo mostrar el resultado;-o
- establecer el nivel de compresión de 0 a 7.Ahora vamos a intentar optimizar png en linux. Primero veamos el tamaño del archivo:
$ df -h image.png
Para realizar la compresión de imágenes utilice el siguiente comando:
$ optipng image.png
Luego de nuevo miremos el tamaño, en este ejemplo las diferencias no son visibles porque la imagen es muy pequeña, pero a mayor tamaño serán significativas:
Aquí también la compresión de imágenes png linux sin pérdidas, lo que significa que obtendrá exactamente la misma imagen sólo que más pequeña. También puede especificar el nivel de compresión, no afecta a la calidad de la imagen, pero afecta directamente el tiempo de ejecución del programa. El valor puede ser de 0 a 7 y cuanto más, más fuerte será la compresión y más largo será el procesamiento:
$ optipng -o 7 impge.png
Para el procesamiento por lotes de imágenes se puede utilizar el mismo principio que en el trabajo con jpeg:
$ cd images/
$ optipng *.png
Ahora ya sabes cómo se hace la optimización de imágenes en linux.