
Tabla de contenidos
¿Qué es jpegoptim?
jpegoptim es una herramienta libre de línea de comandos para optimizar y comprimir imágenes JPEG/JFIF. Soporta tanto optimización sin pérdida como compresión con pérdida, según las opciones utilizadas. Por defecto trabaja en modo sin pérdida, optimizando principalmente las tablas Huffman para reducir el tamaño del archivo sin degradar la calidad visual.
Está disponible para Linux, macOS y Windows, y se distribuye bajo licencia GPL. Resulta especialmente útil en flujos de trabajo web, automatizaciones y procesamiento por lotes, por su equilibrio entre simplicidad, eficiencia y control.
Su comportamiento por defecto es conservador: modifica el archivo original solo si consigue optimizarlo. Si se desea una reducción más agresiva del tamaño, puede utilizarse también en modo con pérdida mediante opciones como –max o –size.
Instalación en Linux
En Debian, Ubuntu y derivados, puede instalarse desde la terminal con:
sudo apt update
sudo apt install jpegoptim
Para comprobar que la instalación se ha realizado correctamente, ejecute:
jpegoptim --version
¿Cómo se utiliza jpegoptim?
Para procesar imágenes de un directorio concreto, sitúese primero en él desde la terminal.
El comando básico
jpegoptim *.jpg
Este comando optimiza todos los archivos con extensión .jpg del directorio actual.
El asterisco actúa como comodín. Por ejemplo, también podría usarse algo como:
jpegoptim foto*.jpg
para optimizar todos los archivos cuyo nombre empiece por =foto= y terminen en =.jpg=.
Conviene tener en cuenta que *.jpg no incluye archivos con extensión .jpeg ni variantes en mayúsculas como .JPG. Si necesita abarcar más casos, puede usar patrones adicionales o herramientas como find.
El comando recomendado para web
jpegoptim --strip-all --max=85 --all-progressive *.jpg
Descripción de los parámetros:
- –strip-all elimina metadatos y marcadores adicionales, como EXIF, comentarios y otros datos embebidos. Esto suele reducir el tamaño del archivo, aunque puede no convenir si desea conservar metadatos o perfiles de color.
- –max=85 fija una calidad máxima del 85. Si la imagen original ya está por debajo de ese nivel de calidad, no vuelve a degradarla y aplica solo optimización sin pérdida.
- –all-progressive convierte las imágenes a JPEG progresivo. Esto suele ser recomendable en web.
Este comando es especialmente útil en entornos web, donde interesa reducir el peso de las imágenes sin perder demasiada calidad visual.
En algunos casos puede interesar forzar determinadas transformaciones aunque el archivo resultante no sea más pequeño. Para ello existe la opción –force.
Ejemplo:
jpegoptim --strip-all --max=85 --all-progressive --force *.jpg
Opciones especialmente útiles
Guardar las imágenes optimizadas en otro directorio
Por defecto, jpegoptim modifica los archivos originales si consigue optimizarlos. Si desea conservarlos, use –dest.
mkdir -p optimizadas
jpegoptim --dest=optimizadas *.jpg
Esto guarda las imágenes optimizadas en otro directorio.
Conservar la fecha de modificación
jpegoptim --preserve *.jpg
Esta opción conserva la marca temporal del archivo original.
Evitar reescrituras con mejoras mínimas
jpegoptim --threshold=1 *.jpg
Con esto, el archivo solo se sustituye si la mejora alcanza al menos un 1%.
Ajustar a un tamaño objetivo
jpegoptim --size=250k foto.jpg
o bien:
jpegoptim --size=60% foto.jpg
Esta opción intenta aproximarse al tamaño indicado, usando compresión con pérdida.
Simular el resultado sin modificar archivos
jpegoptim --noaction --strip-all --max=85 *.jpg
Muy útil para comprobar primero qué reducción obtendría antes de tocar los archivos.
Recomendaciones prácticas
- Para uso web general, –max=80 o –max=85 suele ofrecer un buen equilibrio entre calidad y peso.
- Si las imágenes contienen metadatos útiles o perfiles de color importantes, revise con cuidado el uso de –strip-all.
- Si desea preservar los originales, es preferible trabajar con –dest.
- Antes de aplicar cambios masivos, conviene probar primero con una sola imagen o usar –noaction.
ImageMagick + jpegoptim, combinación mágica
ImageMagick es una suite de software libre para la manipulación de más de 200 formatos de imágenes (PNG, JPEG, GIF, etc.) desde la línea de comandos en Linux. Puede instalarlo, según sea su districubión Linux:
- Debian/Ubuntu: sudo apt-get install imagemagick
- Fedora/RHEL: sudo dnf install ImageMagick
- Arch Linux: sudo pacman -S imagemagick
ImageMagick resulta ideal para redimensionar, recortar, convertir entre formatos y realizar transformaciones previas. Después, jpegoptim puede encargarse de la optimización final del JPEG.
Ejemplo:
magick original.png -resize 1024x768 -quality 90 output.jpg
jpegoptim --max=85 --strip-all output.jpg
El resultado es una imagen redimensionada, convertida a JPG y optimizada para reducir su peso final. Si necesita aprender qué diferencia hay entre imágenes PNG e imánges JPG, así como otros formatos de imágen, vea Tipos de imágenes y sus formatos.
Hay un matiz muy importante que conviene aclarar en cuando al ejemplo anterior. ¿Qué ocurriría si la proporción (ancho dividido entre alto) de la imagen que estamos tratando no coincide con la de este ejemplo: 1024×768. Lo que pasaría es que Magick no la deformaría. Así, -resize 1024×768 no significa “deja la imagen exactamente en 1024×768 deformándola si hace falta”. Lo que significa más bien “haz que quepa dentro de 1024×768 píxeles manteniendo proporción”.
Redimensionar todas las imágenes de un directorio a un máximo de 1600 px
En ImageMagick 7, el comando principal es magick. La propia documentación de ImageMagick indica además que magick convert está obsoleto y debe usarse simplemente magick. Cambie el valor 1600 del ejemplo siguiente por los píxeles que desee para sus imágenes:
magick mogrify -resize '1600x>' *.jpg
Observe que el comando anterior sobrescribirá sus archivos de imagen. Si desea conservar los originales, utilice estos en su lugar:
mkdir -p redimensionadas
magick mogrify -path redimensionadas -resize '1600x>' *.jpg
mkdir crea un directorio, mientras que -path redimensionadas ordena que las imágenes redimensionadas se ubiquen en dicho directorio.
En versiones anteriores de ImageMagick, omita la palabra magick:
mogrify -resize '1600x>' *.jpg
Error frecuente: omitir los paréntesis angulares junto al número de píxeles, o peor aun, omitir las comillas simples
Olvidar las comillas simples que encierran el número de píxeles ‘1600x>’ puede ocasionar un desastre o un comportamiento erróneo, como que las imágenes queden inservibles. El paréntesis angular debe ser escapado y, en caso contrario, el shell ya no interpretaría (>) como parte de 1600x>, sino como redirección
En cuando a omitir los paréntesis angulares (><), ocasionaría las redimensión de todas las imágenes JPG, tanto si son más grandes como más pequeñas en píxeles al número indicado
- El símbolo mayor que (>) significa reducir la imagen solo si esta es más grande. No ampliar las pequeñas.
- El símbolo menor que (<) significa ampliar la imagen solo si esta es más pequeña. No reducir las grandes. Este segundo caso, aumentar el peso y tamaño de imágenes sin ganar ninguna calidad, probablemente no es lo que desea hacer.
Actualizar
Alternativas
Existen otras herramientas de gran calidad para la optimización de imágenes:
- mozjpeg. Suele ofrecer una compresión JPEG más agresiva que jpegoptim, aunque puede ser algo más lento.
- optipng. Optimización sin pérdida para imágenes PNG.
- pngquant. Compresión con pérdida muy eficaz para PNG.
- cwebp, gif2webp y webpmux. Herramientas oficiales para trabajar con imágenes WebP.
- avifenc. Muy interesante para generar imágenes AVIF con tasas de compresión muy altas.
Conclusión
jpegoptim es una herramienta excelente para optimizar imágenes JPEG desde terminal de forma rápida, segura y automatizable. Su modo sin pérdida por defecto la hace especialmente fiable, y sus opciones con pérdida permiten ajustar con bastante precisión el equilibrio entre calidad visual y tamaño de archivo.
