Cómo redimensionar y recortar imágenes con FFmpeg

¿Crees que FFmpeg solo sirve para procesar archivos de vídeo? Piénsalo dos veces. Esta herramienta es increíblemente versátil y puede leer, recortar, redimensionar y convertir imágenes individuales con total precisión.

Ilustración de cómo funciona el comando FFmpeg para procesar imágenes.
Diagrama del proceso de redimensionado y recorte de imágenes usando FFmpeg.

Para empezar a manipular una imagen, el filtro scale es fundamental. Si quieres redimensionar un archivo directamente, por ejemplo a 1280×720 pixels, puedes usar este comando básico:

ffmpeg -i imagen.jpg -vf scale=1280:720 salida.jpg

Luego, si necesitas aislar una región específica de esa imagen, el filtro crop es tu mejor amigo. La sintaxis sigue un formato claro:

crop=ancho:alto:x:y

Por ejemplo, crop=800:600:100:50 tomaría una zona de 800×600 pixels, empezando desde la coordenada X=100 y Y=50.

Puedes incluso combinar ambos filtros en un solo paso. Si quieres recortar una zona específica y luego llevarla a una resolución nueva como 1280×720, el comando sería:

ffmpeg -i imagen.jpg -vf "crop=800:600:100:50,scale=1280:720" salida.jpg

Un truco muy útil es mantener las proporciones automáticamente. Si solo especificas el ancho, como scale=1280:-1, FFmpeg calculará la altura restante por ti.

Ejemplo práctico: 1152×640

Vamos a aplicar esto en un caso real. Imagina que necesitas redimensionar una imagen a 1152×653, y luego quitar exactamente los 13 píxeles de la parte superior para terminar con un tamaño final de 1152×640.

Aquí está el comando exacto para lograr ese resultado:

ffmpeg -i imagen.jpg -vf "scale=1152:653,crop=1152:640:0:13" salida.jpg

Fíjate en la parte del recorte, crop=1152:640:0:13. Esto significa que mantienes un ancho de 1152 y conservas una altura final de 640. Al poner x=0, empiezas desde el borde izquierdo, y al usar y=13, estás descartando directamente los 13 píxeles superiores.

Finalmente, si quieres asegurarte de que la calidad no se pierda durante la recompresión del archivo JPG, puedes añadir un parámetro como -q:v 2. Esto garantiza una buena calidad en el resultado final:

ffmpeg -i imagen.jpg -vf "scale=1152:653,crop=1152:640:0:13" -q:v 2 salida.jpg