Idioma
Categoría
Buscar

Cómo convertir imágenes a WebP utilizando la línea de comandos

Descubre cómo convertir imágenes JPG, PNG y TIFF a WebP vía terminal en Linux, con la posibilidad de procesar varias imágenes al mismo tiempo. ¡Reduce el tamaño sin perder calidad!

Cómo convertir imágenes a WebP utilizando la línea de comandos
En Terminal Por Rudi Drusian Lange
Publicado el
Última actualización

Introducción

WebP es un formato moderno para archivos de imagen, gratuito y de código abierto, desarrollado por Google para soportar compresión con y sin pérdida de calidad, con el objetivo de optimizar la visualización de imágenes en sitios web.

Las imágenes son responsables de la mayor parte de los datos transferidos en la mayoría de los sitios, lo que hace que el tamaño de los archivos de imágenes sea un factor crucial para una navegación rápida y fluida, especialmente en dispositivos móviles.

Las imágenes en formato WebP son significativamente más pequeñas en tamaño que las en formato JPG, incluso en niveles similares de compresión con pérdida, manteniendo la misma calidad visual. Además, a diferencia de JPG, WebP soporta transparencia (canal alfa), una característica que antes era exclusiva de formatos como PNG, pero con la ventaja de generar archivos considerablemente más pequeños.

Esta combinación de menor tamaño de archivo y mayor flexibilidad hace que WebP sea una excelente opción para mejorar el rendimiento y la calidad de los sitios web.

Instalando cwebp en Linux

El comando cwebp se utilizará para la conversión de imágenes. Para instalarlo, ejecute el comando apropiado según su distribución:

# bash

En Ubuntu/Debian:
sudo apt install webp

En Fedora:
sudo dnf install webp

En Arch Linux:
sudo pacman -S webp

En Slackware:
sudo slackpkg install libwebp

Convirtiendo imágenes a WebP

El comando cwebp soporta la conversión de imágenes a partir de los formatos PNG, JPEG, TIFF y WebP. Vale la pena destacar que los archivos PNG y WebP animados no son soportados.

Convirtiendo una imagen JPG a WebP:

# bash

cwebp -q 80 nombre-de-la-imagen.jpg -o nombre-de-la-imagen.webp 

Convirtiendo una imagen PNG a WebP:

# bash

cwebp -q 80 nombre-de-la-imagen.png -o nombre-de-la-imagen.webp 

En los ejemplos anteriores:

  • -q 80 Define la calidad de la imagen final en WebP, con valores de 0 a 100.
  • -o Especifica el nombre del archivo WebP que se generará después de la conversión.

Ejemplo práctico

En este ejemplo, convertiremos dos imágenes: una en formato JPG llamada ilustracion-01.jpg y otra en formato PNG llamada ilustracion-02.png, al formato WebP. Listando los archivos originales:

# bash

ls -lh

total 716K
-rw-r--r-- 1 rudi users 381K Feb 6 09:53 ilustracion-01.jpg
-rw-r--r-- 1 rudi users 329K Feb 6 10:00 ilustracion-02.png

Utilizaremos una calidad de 60%, lo que proporcionará una excelente compresión, sin que la diferencia visual sea perceptible para muchas imágenes.

Convirtiendo la imagen ilustracion-01.jpg a WebP:

# bash

cwebp -q 60 ilustracion-01.jpg -o ilustracion-01.webp

Saving file 'ilustracion-01.webp'
File: ilustracion-01.jpg
Dimension: 1400 x 800
Output: 136206 bytes Y-U-V-All-PSNR 37.51 36.24 36.67 37.13 dB
(0.97 bpp)
block count: intra4: 3897 (88.57%)
intra16: 503 (11.43%)
skipped: 1 (0.02%)
bytes used: header: 313 (0.2%)
mode-partition: 17761 (13.0%)
Residuals bytes |segment 1|segment 2|segment 3|segment 4| total
macroblocks: | 8%| 30%| 41%| 21%| 4400
quantizer: | 45 | 38 | 32 | 21 |
filter level: | 14 | 8 | 41 | 38 |

Verificando el tamaño del archivo después de la conversión:

# bash

ls -lh ilustracion-01.*

-rw-r--r-- 1 rudi users 381K Feb 6 09:53 ilustracion-01.jpg
-rw-r--r-- 1 rudi users 134K Feb 6 10:28 ilustracion-01.webp

La compresión alcanzó aproximadamente 65%, manteniendo la calidad visual de la imagen, como se puede observar en la comparación entre las imágenes.

Imagen original en formato JPG ↓

Imagen original en formato JPG

Imagen comprimida en formato WebP ↓

Imagen comprimida en formato WebP

El proceso de conversión para imágenes PNG sigue el mismo principio. Ahora convertiremos la imagen ilustracion-02.png al formato WebP:

# bash

cwebp -q 60 ilustracion-02.png -o ilustracion-02.webp

Saving file 'ilustracion-02.webp'
File: ilustracion-02.png
Dimension: 500 x 500
Output: 19842 bytes Y-U-V-All-PSNR 39.00 39.90 39.83 39.27 dB
(0.63 bpp)
block count: intra4: 730 (71.29%)
intra16: 294 (28.71%)
skipped: 8 (0.78%)
bytes used: header: 157 (0.8%)
mode-partition: 3267 (16.5%)
Residuals bytes |segment 1|segment 2|segment 3|segment 4| total
macroblocks: | 4%| 22%| 30%| 44%| 1024
quantizer: | 45 | 41 | 34 | 26 |
filter level: | 14 | 9 | 21 | 28 |

Verificando el tamaño del archivo después de la conversión:

# bash

ls -lh ilustracion-02.*

-rw-r--r-- 1 rudi users 329K Feb 6 10:00 ilustracion-02.png
-rw-r--r-- 1 rudi users  20K Feb 6 10:56 ilustracion-02.webp

La compresión alcanzó increíbles 94%, manteniendo una excelente calidad visual. Recuerde, el porcentaje de compresión varía según la composición de la imagen. Las imágenes con menos colores, como dibujos o gráficos, tienden a comprimirse más sin perder mucha calidad.

Imagen original en formato PNG ↓

Imagen original en formato PNG

Imagen comprimida en formato WebP ↓

Imagen comprimida en formato WebP

Soporte

El formato WebP es soportado nativamente por los navegadores Google Chrome, Safari, Firefox, Edge y Opera. Además, muchas herramientas y bibliotecas, incluyendo software de edición de imágenes, ya ofrecen soporte para WebP. Sin embargo, aún pueden existir algunas limitaciones en ciertas plataformas o aplicaciones.

El paquete webp también incluye una herramienta para decodificación y visualización de imágenes WebP usando OpenGL. Para visualizar una imagen WebP desde la terminal, use el siguiente comando:

# bash

vwebp ilustracion-01.webp

Convirtiendo múltiples imágenes

Convertir una sola imagen usando la línea de comandos, como vimos en los ejemplos anteriores, es relativamente simple. Sin embargo, cuando se trata de cientos de imágenes, el proceso puede ser más lento. Para optimizar esto, puede crear un script que convierta varias imágenes a la vez.

Script para conversión masiva:

# bash

for file in *.{jpg,jpeg,png}; do cwebp -q 60 "$file" -o "${file%.*}.webp"; done

Ejecute el comando anterior dentro de la carpeta donde se encuentran las imágenes a convertir. Este script convertirá todas las imágenes con extensiones JPG, JPEG y PNG a WebP, manteniendo el nombre original de los archivos y solo cambiando la extensión a .webp. Los archivos originales se conservarán.

Explicación del comando:

  1. for file in *.{jpg,jpeg,png}:
    • Itera sobre todos los archivos en el directorio actual con las extensiones .jpg, .jpeg y .png.
  2. cwebp -q 60 "$file":
    • Convierte la imagen actual $file a WebP con calidad 60 (ajuste el valor -q según sea necesario).
  3. -o "${file%.*}.webp":
    • Define el nombre del archivo de salida. ${file%.*} elimina la extensión del archivo original (por ejemplo, foto.jpg se convierte en foto), y .webp se agrega al final.
  4. done
    • Finaliza el bucle.

Convirtiendo imágenes de un directorio específico

Si desea convertir imágenes de un directorio específico, simplemente reemplace carpeta con la ruta del directorio deseado:

# bash

for file in carpeta/*.{jpg,jpeg,png}; do cwebp -q 60 "$file" -o "${file%.*}.webp"; done

Eliminando las imágenes originales después de la conversión

Si desea eliminar las imágenes originales después de la conversión, agregue && rm "$file" al comando:

# bash

for file in *.{jpg,jpeg,png}; do cwebp -q 60 "$file" -o "${file%.*}.webp" && rm "$file"; done

Esto eliminará cada archivo original después de una conversión exitosa.

Conclusión

El formato WebP se destaca como una solución moderna y eficiente para la optimización de imágenes en la web, combinando alta calidad visual con tamaños de archivo significativamente más pequeños. Como hemos visto en este artículo, la conversión de imágenes a WebP se puede realizar de manera rápida y práctica utilizando herramientas de línea de comandos, como cwebp, disponible en la mayoría de las distribuciones de Linux.

Además de la conversión de imágenes, el comando ofrece una amplia gama de opciones avanzadas. Puede cambiar el modo de compresión, agregar transparencia en imágenes con fondo, redimensionar y recortar imágenes. Para explorar todas las posibilidades, consulte el manual completo ejecutando el comando man cwebp en la terminal.

Comandos simples y scripts automatizados le permiten convertir grandes cantidades de imágenes de formatos como JPG, PNG y TIFF a WebP, mejorando el rendimiento de sitios y aplicaciones, especialmente en dispositivos móviles y conexiones más lentas.

Si aún no ha probado WebP, ahora es el momento ideal para comenzar. Aproveche las técnicas presentadas aquí y vea cómo la adopción de este formato puede traer beneficios reales a sus proyectos.

Referencias

Para la elaboración de este artículo, una de las fuentes fue el manual (man page) disponible en Slackware Linux.

Este no es mi idioma original y no lo hablo muy bien. Utilicé mis pocos conocimientos y herramientas de traducción para redactar el texto de este artículo. Disculpe los posibles errores ortográficos o gramaticales, se agradecen sugerencias de correcciones y se pueden enviar al correo electrónico de contacto que se encuentra en el pie de página del sitio. Mi intención es compartir algunos conocimientos y espero que esta traducción sea lo suficientemente buena.


Algunos de los contenidos de este sitio web, incluidos textos, imágenes, gráficos y otros materiales, pueden ser generados o mejorados mediante herramientas de inteligencia artificial (IA). Para obtener más detalles sobre nuestro uso de IA, consulte nuestro Término de uso.