Cómo optimizar y comprimir imágenes JPEG o PNG en la línea de comandos de Linux


¿Tiene muchas imágenes y desea optimizar y comprimir las imágenes sin perder su calidad original antes de subirlas a cualquier nube o almacenamiento local? Hay muchas aplicaciones GUI disponibles que le ayudarán a optimizar las imágenes. Sin embargo, aquí hay dos utilidades de línea de comando simples para optimizar imágenes y son:

  1. jpegoptim – is a utility to optimize/compress JPEG files without loosing quality.
  2. OptiPNG – is a small program that optimize PNG images to smaller size without losing any information.

Con estas dos herramientas, puede optimizar una o varias imágenes a la vez.

Comprimir u optimizar imágenes JPEG desde la línea de comandos

jpegoptim es una herramienta de línea de comandos que se puede utilizar para optimizar y comprimir archivos JPEG, JPG y JFIF sin perder su calidad real. Esta herramienta admite la optimización sin pérdidas, que se basa en la optimización de las tablas de Huffman.

Para instalar jpegoptim en sus sistemas Linux, ejecute el siguiente comando desde su terminal.

# apt-get install jpegoptim
or
$ sudo apt-get install jpegoptim

En sistemas basados u200bu200ben RPM como RHEL, CentOS, Fedora, etc., debe instalar y habilitar el repositorio EPEL o, alternativamente, puede instalar el repositorio epel directamente desde la línea de comandos como se muestra:

# yum install epel-release
# dnf install epel-release    [On Fedora 22+ versions]

A continuación, instale el programa jpegoptim desde el repositorio como se muestra:

# yum install jpegoptim
# dnf install jpegoptim    [On Fedora 22+ versions]

La sintaxis de jpegoptm es:

$ jpegoptim filename.jpeg
$ jpegoptim [options] filename.jpeg

Vamos a comprimir ahora la siguiente imagen tecmint.jpeg , pero antes de optimizar la imagen, primero averigüe el tamaño real de la imagen usando el comando du como se muestra.

$ du -sh tecmint.jpeg 

6.2M	tecmint.jpeg

Aquí el tamaño real del archivo es 6.2MB, ahora comprima este archivo ejecutando:

$ jpegoptim tecmint.jpeg 

Abra la imagen comprimida en cualquier aplicación de visor de imágenes, no encontrará diferencias importantes. La fuente y las imágenes comprimidas tendrán la misma calidad.

El comando anterior optimiza las imágenes al tamaño máximo posible. Sin embargo, puede comprimir la imagen dada a un tamaño específico, pero deshabilita la optimización sin pérdida.

Por ejemplo, comprimamos por encima de la imagen de 5,6 MB a alrededor de 250 k.

$ jpegoptim --size=250k tecmint.jpeg

Puede preguntar cómo comprimir las imágenes en todo el directorio, eso tampoco es difícil. Vaya al directorio donde tiene las imágenes.

[email protected] ~ $ cd img/
[email protected] ~/img $ ls -l
total 65184
-rwxr----- 1 tecmint tecmint 6680532 Jan 19 12:21 DSC_0310.JPG
-rwxr----- 1 tecmint tecmint 6846248 Jan 19 12:21 DSC_0311.JPG
-rwxr----- 1 tecmint tecmint 7174430 Jan 19 12:21 DSC_0312.JPG
-rwxr----- 1 tecmint tecmint 6514309 Jan 19 12:21 DSC_0313.JPG
-rwxr----- 1 tecmint tecmint 6755589 Jan 19 12:21 DSC_0314.JPG
-rwxr----- 1 tecmint tecmint 6789763 Jan 19 12:21 DSC_0315.JPG
-rwxr----- 1 tecmint tecmint 6958387 Jan 19 12:21 DSC_0316.JPG
-rwxr----- 1 tecmint tecmint 6463855 Jan 19 12:21 DSC_0317.JPG
-rwxr----- 1 tecmint tecmint 6614855 Jan 19 12:21 DSC_0318.JPG
-rwxr----- 1 tecmint tecmint 5931738 Jan 19 12:21 DSC_0319.JPG

Y luego ejecute el siguiente comando para comprimir todas las imágenes a la vez.

[email protected] ~/img $ jpegoptim *.JPG
DSC_0310.JPG 6000x4000 24bit N Exif  [OK] 6680532 --> 5987094 bytes (10.38%), optimized.
DSC_0311.JPG 6000x4000 24bit N Exif  [OK] 6846248 --> 6167842 bytes (9.91%), optimized.
DSC_0312.JPG 6000x4000 24bit N Exif  [OK] 7174430 --> 6536500 bytes (8.89%), optimized.
DSC_0313.JPG 6000x4000 24bit N Exif  [OK] 6514309 --> 5909840 bytes (9.28%), optimized.
DSC_0314.JPG 6000x4000 24bit N Exif  [OK] 6755589 --> 6144165 bytes (9.05%), optimized.
DSC_0315.JPG 6000x4000 24bit N Exif  [OK] 6789763 --> 6090645 bytes (10.30%), optimized.
DSC_0316.JPG 6000x4000 24bit N Exif  [OK] 6958387 --> 6354320 bytes (8.68%), optimized.
DSC_0317.JPG 6000x4000 24bit N Exif  [OK] 6463855 --> 5909298 bytes (8.58%), optimized.
DSC_0318.JPG 6000x4000 24bit N Exif  [OK] 6614855 --> 6016006 bytes (9.05%), optimized.
DSC_0319.JPG 6000x4000 24bit N Exif  [OK] 5931738 --> 5337023 bytes (10.03%), optimized.

También puede comprimir varias imágenes seleccionadas a la vez:

$ jpegoptim DSC_0310.JPG DSC_0311.JPG DSC_0312.JPG 
DSC_0310.JPG 6000x4000 24bit N Exif  [OK] 6680532 --> 5987094 bytes (10.38%), optimized.
DSC_0311.JPG 6000x4000 24bit N Exif  [OK] 6846248 --> 6167842 bytes (9.91%), optimized.
DSC_0312.JPG 6000x4000 24bit N Exif  [OK] 7174430 --> 6536500 bytes (8.89%), optimized.

Para obtener más detalles sobre la herramienta jpegoptim, consulte las páginas de manual.

$ man jpegoptim 

Comprimir u optimizar imágenes PNG desde la línea de comandos

OptiPNG es una herramienta de línea de comandos que se utiliza para optimizar y comprimir archivos PNG (gráficos de red portátiles) sin perder su calidad original.

La instalación y el uso de OptiPNG es muy similar a jpegoptim.

Para instalar OptiPNG en sus sistemas Linux, ejecute el siguiente comando desde su terminal.

# apt-get install optipng
or
$ sudo apt-get install optipng
# yum install optipng
# dnf install optipng    [On Fedora 22+ versions]

Nota: Debe tener habilitado el repositorio epel en sus sistemas basados u200bu200ben RHEL/CentOS para instalar el programa optipng.

La sintaxis general de optipng es:

$ optipng filename.png
$ optipng [options] filename.png

Comprimamos la imagen tecmint.png , pero antes de optimizar, primero verifique el tamaño real de la imagen como se muestra:

[email protected] ~/img $ ls -lh tecmint.png 
-rw------- 1 tecmint tecmint 350K Jan 19 12:54 tecmint.png

Aquí el tamaño de archivo real de la imagen de arriba es 350K, ahora comprima este archivo ejecutando:

[email protected] ~/img $ optipng tecmint.png 
OptiPNG 0.6.4: Advanced PNG optimizer.
Copyright (C) 2001-2010 Cosmin Truta.

** Processing: tecmint.png
1493x914 pixels, 4x8 bits/pixel, RGB+alpha
Reducing image to 3x8 bits/pixel, RGB
Input IDAT size = 357525 bytes
Input file size = 358098 bytes

Trying:
  zc = 9  zm = 8  zs = 0  f = 0		IDAT size = 249211
                               
Selecting parameters:
  zc = 9  zm = 8  zs = 0  f = 0		IDAT size = 249211

Output IDAT size = 249211 bytes (108314 bytes decrease)
Output file size = 249268 bytes (108830 bytes = 30.39% decrease)

Como puede ver en el resultado anterior, el tamaño del archivo tecmint.png se ha reducido hasta en un 30,39%. Ahora verifique el tamaño del archivo nuevamente usando:

[email protected] ~/img $ ls -lh tecmint.png 
-rw-r--r-- 1 tecmint tecmint 244K Jan 19 12:56 tecmint.png

Abra la imagen comprimida en cualquier aplicación de visor de imágenes, no encontrará diferencias importantes entre los archivos originales y comprimidos. La fuente y las imágenes comprimidas tendrán la misma calidad.

Para comprimir por lotes o varias imágenes PNG a la vez, simplemente vaya al directorio donde residen todas las imágenes y ejecute el siguiente comando para comprimir.

[email protected] ~ $ cd img/
[email protected] ~/img $ optipng *.png

OptiPNG 0.6.4: Advanced PNG optimizer.
Copyright (C) 2001-2010 Cosmin Truta.

** Processing: Debian-8.png
720x345 pixels, 3x8 bits/pixel, RGB
Input IDAT size = 95151 bytes
Input file size = 95429 bytes

Trying:
  zc = 9  zm = 8  zs = 0  f = 0		IDAT size = 81388
                               
Selecting parameters:
  zc = 9  zm = 8  zs = 0  f = 0		IDAT size = 81388

Output IDAT size = 81388 bytes (13763 bytes decrease)
Output file size = 81642 bytes (13787 bytes = 14.45% decrease)

** Processing: Fedora-22.png
720x345 pixels, 4x8 bits/pixel, RGB+alpha
Reducing image to 3x8 bits/pixel, RGB
Input IDAT size = 259678 bytes
Input file size = 260053 bytes

Trying:
  zc = 9  zm = 8  zs = 0  f = 5		IDAT size = 222479
  zc = 9  zm = 8  zs = 1  f = 5		IDAT size = 220311
  zc = 1  zm = 8  zs = 2  f = 5		IDAT size = 216744
                               
Selecting parameters:
  zc = 1  zm = 8  zs = 2  f = 5		IDAT size = 216744

Output IDAT size = 216744 bytes (42934 bytes decrease)
Output file size = 217035 bytes (43018 bytes = 16.54% decrease)
....

Para obtener más detalles sobre optipng, consulte las páginas de manual.

$ man optipng

Conclusión

Si es un webmaster y desea publicar imágenes optimizadas en su sitio web o en un blog, estas herramientas pueden resultar muy útiles. Estas herramientas no solo ahorran espacio en disco, sino que también reducen el ancho de banda mientras se cargan las imágenes.

Si conoces alguna otra manera mejor de lograr lo mismo, háznoslo saber a través de comentarios y no olvides compartir este artículo en tus redes sociales y apóyanos.