
Ich versuche, mit ffmpeg Miniaturansichten von Bildern zu erstellen. Der Ordner enthält verschiedene JPEG-Dateien mit unterschiedlichen Auflösungen.
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
Dies funktioniert mit den meisten Bildern im Ordner, crop=238:358
schlägt jedoch bei bestimmten Bildauflösungen fehl:
input1.jpg: 500x800
Größenänderung und Zuschneiden erfolgreich
input2.jpg: 470x800
Größenänderung und Zuschneiden schlagen fehl:
Ungültige zu große oder nicht positive Größe für Breite „238“ oder Höhe „358“
Das Problem tritt auf, wenn skalierte Bilder aufgrund der Skalierung des Seitenverhältnisses 237px
nicht angezeigt werden.238px
Da es sich um ein Skript handelt, das eine Reihe von Dateien verarbeitet, suche ich nach einer Lösung, die alle Bildauflösungen verarbeiten kann
Antwort1
Der Skalenfilter kürzt das Ergebnis von Ausdrücken auf eine Ganzzahl, und es ist möglich, dass ein Ausdruck z. B. 237,999 ergibt, das auf 237 gekürzt wird. Die Problemumgehung besteht darin, die Koeffizienten leicht zu erhöhen, 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