Optimizar imágenes desde la terminal en Linux

por | 6 abril, 2016

optimizar-imagenes-terminal

Reducir el “peso” de las imágenes puede ser muy útil si tenemos un blog o utilizamos cualquier servicio online. Es algo que se puede hacer fácilmente con un editor gráfico como GIMP con su extensión “save for web” o desde la terminal tirando de comandos.

Hoy toca esto último y lo vamos a hacer con los programas jpegoptim y optipng, que como habréis adivinado nos cubren archivos con extensión JPG/JPEG y PNG, respectivamente.

jpegoptim

  • Empecemos con jpegoptim y con su sintaxis más básica (atención: esto sobrescribe el archivo original):
jpegoptim archivo.jpg
archivo.jpg 3292x2260 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
  • O 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 3292x2260 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
jpegoptim -S 100k archivo.jpg

optipng

  • optipng más el nombre del archivo es la opción más sencilla (y si!, también sobrescribe el original):
optipng archivo.png

** Processing: archivo.png
1638x1212 pixels, 4x8 bits/pixel, RGB+alpha
Reducing image to 3x8 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, así que los podéis instalar con vuestro gestor de software favorito, en mi caso para Antergos lo hice con un simple:

sudo pacman -S jpegoptim optipng

Mas opciones de ejecución están disponibles en el manual y la ayuda de ambos programas.

9 pensamientos en “Optimizar imágenes desde la terminal en Linux

  1. Bla bla bla

    Creo que para los PNG también está pngcrush…

  2. Vladimir Luna

    Yo siempre he usado el simple image reducer xd… una maravilla… pero este tipo de chucherías me encantan 😀

  3. Neocourage

    Prueba los colores solarizados de terminal :p

    1. tannhausser Autor

      En Terminator no me acabaron de gustar 🙂

  4. Emiliano

    Muy bueno! Gracias por compartir. Lo voy a probar ya que tengo 1861 imágenes en el blog.

    1. tannhausser Autor

      a mi me da miedo contar las mías XD

Los comentarios están cerrados.