Convertir imágenes en lote (batch): la guía práctica con FFmpeg, ImageMagick y herramientas online
Cuando tienes 50 fotos del móvil que pasar a JPG, una galería web de 500 PNG que optimizar a WebP, o el archivo entero de un fotógrafo en RAW que quieres a JPG para preview rápida — la conversión una a una no es una opción. Esta guía cubre los tres caminos para batch real, con comandos listos para copiar.
Resumen rápido
| Camino | Cuándo elegirlo | Velocidad típica |
|---|---|---|
| Online (KaijuConverter) | <50 archivos, sin instalar nada | 2-5 archivos/seg |
| ImageMagick CLI | Cientos, control total, scripting | 10-50 archivos/seg en CPU moderna |
| FFmpeg (incluso para imágenes) | Cuando ya usas FFmpeg para vídeo | 30-100 archivos/seg |
| Apps GUI (XnConvert, IrfanView) | No quieres tocar terminal | 5-15 archivos/seg |
Opción 1: Online sin instalar (lotes pequeños)
Para 50-100 archivos sueltos, el camino más rápido es subirlos directamente:
- JPG a WebP — optimización web típica
- PNG a JPG — aplanar PNGs sin alpha
- HEIC a JPG — fotos de iPhone a formato universal
- PNG a WebP — manteniendo transparencia
- TIFF a JPG — escaneados a formato compartible
- RAW a JPG — generar previews desde formato cámara
KaijuConverter acepta múltiples archivos en un solo drop y devuelve un ZIP. Soporta hasta 500 MB total por trabajo (1 GB en planes de pago). No hay configuración — la calidad por defecto está optimizada para el caso típico.
Opción 2: ImageMagick (control total, miles de archivos)
ImageMagick es el "cuchillo suizo" de las imágenes. Funciona en Windows, macOS y Linux. Instalación:
# macOS (Homebrew)
brew install imagemagick
# Linux Debian/Ubuntu
sudo apt install imagemagick
# Windows: descarga desde imagemagick.org/script/download.php
Patrón básico: convertir todo en la carpeta
# Convertir todos los PNG → JPG (Linux/macOS)
for f in *.png; do
magick "$f" -quality 85 "${f%.png}.jpg"
done
# Misma operación con mogrify (más conciso, sobrescribe destino)
magick mogrify -format jpg -quality 85 *.png
# Windows PowerShell
Get-ChildItem -Filter *.png | ForEach-Object {
magick $_.FullName -quality 85 ($_.BaseName + ".jpg")
}
Procesamiento paralelo (10-100× más rápido)
magick es single-thread por imagen. Para usar todos los cores:
# Linux/macOS — paraleliza con xargs
ls *.png | xargs -P $(nproc) -I {} magick {} -quality 85 {}.jpg
# Con GNU parallel (más control)
parallel magick {} -quality 85 {.}.jpg ::: *.png
En una CPU 8-core moderna procesa ~80 imágenes JPG normales por segundo.
Operaciones combinadas en lote
Resize + format + strip metadata en un solo paso:
# Bajar a max 1920px de ancho, calidad 85, sin EXIF
magick mogrify \
-resize 1920x1920\> \
-quality 85 \
-strip \
-format jpg \
-path optimized/ \
*.png
Banderas útiles:
1920x1920\>— redimensiona solo si excede (no upscale)-strip— elimina EXIF, perfiles ICC, comentarios-path optimized/— guarda en subcarpeta (no sobrescribe originales)
Recursivo en subcarpetas
# Procesar PNGs en cualquier nivel de profundidad
find . -type f -name "*.png" -exec magick {} -quality 85 {}.jpg \;
# Con paralelización
find . -type f -name "*.png" | xargs -P $(nproc) -I {} \
magick {} -quality 85 {}.jpg
Opción 3: cwebp (especializado en WebP)
Para conversión masiva a WebP, el codec oficial de Google (cwebp) produce 5-15% archivos más pequeños que ImageMagick a misma calidad visual:
# Instalación
sudo apt install webp # Linux
brew install webp # macOS
# Conversión
for f in *.png; do
cwebp -q 80 -m 6 "$f" -o "${f%.png}.webp"
done
# Paralelo
ls *.png | xargs -P $(nproc) -I {} \
bash -c 'cwebp -q 80 -m 6 "$1" -o "${1%.png}.webp"' _ {}
Flags clave: -q 80 (calidad), -m 6 (método encoder más lento + mejor compresión), -mt (multithread por archivo, útil para imágenes grandes).
Opción 4: FFmpeg para imágenes
FFmpeg también convierte imágenes (no solo vídeo). Útil si ya lo tienes instalado:
# Convertir todos los HEIC del iPhone → JPG
for f in *.heic; do
ffmpeg -i "$f" -q:v 2 "${f%.heic}.jpg"
done
# Con resize
for f in *.png; do
ffmpeg -i "$f" -vf "scale=1920:-1" -q:v 2 "${f%.png}.jpg"
done
-q:v en FFmpeg para JPG: 1 = max calidad, 31 = mínima. 2-5 es buen rango calidad alta.
Tip producción: dry-run antes del batch destructivo
Siempre prueba en un subset antes de procesar miles:
# Test con los primeros 5 archivos
ls *.png | head -5 | xargs -I {} magick {} -quality 85 {}.jpg
# Verifica que se ven bien, luego ejecuta el batch completo
Y mantén los originales intactos (procesa a otra carpeta con -path output/ o usando un subdirectorio destino):
mkdir -p optimized
for f in *.png; do
magick "$f" -quality 85 "optimized/${f%.png}.jpg"
done
Errores comunes
- Espacios en nombres de archivo — siempre encierra
"$f"con comillas, no$fdesnudo. - Sin
-strip— los EXIF de geoposición pueden filtrar tu ubicación al publicar online. mogrifysin-format— sobrescribe los originales sin pedir confirmación.- Procesar millones de archivos en una sola carpeta —
ls *.pngpuede romper si hay >100k. Usafind ... -print0 | xargs -0. - Olvidar
-quality— el default de ImageMagick es 92, suele ser excesivo para web (85 es el sweet spot).
Conversiones relacionadas
- JPG a WebP — optimización web típica
- PNG a JPG — aplanar PNGs para galería
- HEIC a JPG — fotos iPhone universalmente compatibles
- PNG a WebP — manteniendo transparencia
- TIFF a PNG — escaneados archivo a formato web
- RAW a JPG — previsualizaciones desde RAW de cámara