Optimizar imagenes JPG y PNG desde consola Linux

 

jpegoptim

Empecemos con jpegoptim y con su sintaxis más básica (atención: esto sobrescribe el archivo original):

jpegoptim archivo.jpg
archivo.jpg 3292×2260 24bit N Exif JFIF [OK] 4800621 –> 4635945 bytes (3.43%), optimized
Si deseamos que la imagen resultante vaya a otro directorio para no sobreescribirla lo hacemos con “-d” y a continuación ponemos la ruta:

jpegoptim -d ~/blog file.jpg
Se pueden optimizar varios archivos a la vez:

jpegoptim imagen1.jpg imagen2.jpg imagen3.jpg
utilizar comodines para abarcar todos los archivos contenidos en un directorio. Basta situarse con la terminal dentro del mismo y ejecutar:

jpegoptim *.jpg
El algoritmo de reducción utilizado por defecto es bastante conservador, comprimiendo sin apenas perdida.
Si queremos afinar más, y no nos importa perder algo de calidad para que el archivo ocupe menos, lo podemos hacer con el parámetro “-m” estableciendo un valor entre 0 y 100. Por ej.

jpegoptim -m70 archivo.jpg
Pero eso es jugar un poco a la lotería, así que vamos a ver como podemos simular esa compresión antes de ejecutarla y ver cuanto espacio ahorramos:

jpegoptim -n -t -m70 archivo.jpg

archivo.jpg 3292×2260 24bit P JFIF [OK] 4483338 –> 619895 bytes (86.17%), optimized
Si queremos especificar un valor determinado (100 kB en este ejemplo) lo hacemos con la opcion -S

optipng

optipng archivo.png

** Processing: archivo.png
1638×1212 pixels, 4×8 bits/pixel, RGB+alpha
Reducing image to 3×8 bits/pixel, RGB
Input IDAT size = 6285295 bytes
Input file size = 6287644 bytes

Trying:
zc = 9 zm = 8 zs = 0 f = 0 IDAT size = 5611598
zc = 9 zm = 8 zs = 0 f = 5 IDAT size = 3397112

Selecting parameters:
zc = 9 zm = 8 zs = 0 f = 5 IDAT size = 3397112

Output IDAT size = 3397112 bytes (2888183 bytes decrease)
Output file size = 3397169 bytes (2890475 bytes = 45.97% decrease)
Por supuesto podemos optimizar varios archivos PNG a la vez:

optipng imagen1.png imagen2.png imagen3.png. Imagen4.png
utilizar comodines como vimos en el caso anterior:

optipng *.png
e incluso hacerlo de forma recursiva (con jpegoptim no probé, pero supongo que debería funcionar igual), para optimizar en directorios y subdirectorios:

find -type f -name “*.png” -exec optipng {} \;
Instalación
Tanto jpegoptim como optipng están en los repositorios de las principales distribuciones GNU/Linux,
Comando recursivo:

find -type f -name “*.jpg” -exec jpegoptim –strip-all {} \;

Un saludo
El equipo de Indaloweb