Optimizar imágenes desde la terminal en Linux

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.

8 thoughts on “Optimizar imágenes desde la terminal en Linux”

  1. Bla bla bla says:

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

  2. xpt says:

    Buenísimo!

  3. Vladimir Luna says:

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

  4. Neocourage says:

    Prueba los colores solarizados de terminal :p

    1. tannhausser says:

      En Terminator no me acabaron de gustar 🙂

  5. Emiliano says:

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

    1. tannhausser says:

      a mi me da miedo contar las mías XD

  6. linuxmanr4 says:

    Yo utilizo leanify que hace más o menos lo mismo. 🙂

Deja un comentario