4

I'm trying to generate images thumbnails using ffmpeg. The folder contains various jpeg files with different resolutions.

ffmpeg -y -i input1.jpg -filter_complex "scale=(iw*sar)*max(238/(iw*sar)\,358/ih):ih*max(238/(iw*sar)\,358/ih), crop=238:358" thumbnail.jpg

It works with most images in the folder but crop=238:358 will fail depending on certain images resolutions:

input1.jpg: 500x800 resize and crop successful

input2.jpg: 470x800 resize and crop fails:

Invalid too big or non positive size for width '238' or height '358'

The problem happens when scaled images get 237px instead of 238px due to aspect ratio scaling.

Since this is a script processing a bunch of files, I'm looking for a solution that can handle all images resolutions

1 Answer 1

2

The scale filter will truncate the result of expressions to an integer, and it's possible for expression to yield e.g. 237.999 which gets truncated to 237. The workaround is to increase the coefficients slightly, so

ffmpeg -y -i input1.jpg -vf "scale=(iw*sar)*max(238.1/(iw*sar)\,358.1/ih):ih*max(238.1/(iw*sar)\,358.1/ih), crop=238:358" thumbnail.jpg

1
  • Perfect. It works with all images now and the final thumbnail image is 238x358
    – Azevedo
    Commented Aug 25, 2019 at 13:19

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .