У меня есть 2 изображения, которые я хотел бы поместить одно поверх другого.Я сделал эту строку:
ffmpeg -i "C:\image_1.jpg" -i "C:\image_2.jpg" -q:v 1 -filter_complex "[0:v]scale=800:-1[v0];[v0][1:v]vstack" C:\combined.jpg
, и она работает, когда они имеют одинаковое разрешение 800x800 и когда разрешение первого меньше image_2
.
Можно ли добавитьнемного математики вместо 800, чтобы сделать эту линию подходящей для любого типа разрешений, когда первый больше или второй больше (ширина и высота отдельно)?
Я хочу найти максимальный размер и масштабировать другое изображениек нему сохраняются пропорции.Если соотношение сторон двух изображений не одинаковое, заполните отверстия простым белым (255 255 255).
Полагаю, математика должна выглядеть следующим образом:
w1, h1 - width and height of the 1st img
w2, h2 - width and height of the 2st img
w1', h1', w2', h2' - width and height of resulted images
if w1 max{w1, h1, w2, h2} -> if w2/h2>=1 -> w2'=w1; h2'=h2*w2'/w2
if w1 max{w1, h1, w2, h2} -> if w2/h2<1 -> h2'=w1; w2'=w2*h2'/h2
if h1 max{w1, h1, w2, h2} -> if w2/h2>=1 -> w2'=h1; h2'=h2*w2'/w2
if h1 max{w1, h1, w2, h2} -> if w2/h2<1 -> h2'=h1; w2'=w2*h2'/h2
if w2 max{w1, h1, w2, h2} -> if w1/h1>=1 -> w1'=w2; h1'=h1*w1'/w1
if w2 max{w1, h1, w2, h2} -> if w1/h1<1 -> h1'=w2; w1'=w1*h1'/h1
if h2 max{w1, h1, w2, h2} -> if w1/h1>=1 -> w1'=h2; h1'=h1*w1'/w1
if h2 max{w1, h1, w2, h2} -> if w1/h1<1 -> h1'=h2; w1'=w1*h1'/h1
Пример 1 Пример 2
Если два изображения i1 и i2 имеют размеры 800x800 и - 436x800 соответственно: объединенное изображение будет 800x1600.
Если два изображения i1 иi2 составляют 300x400 и 200x500 соответственно: макс. (300 400 200 500) = 500;300x400 -> (300 * 500/400 = 375) x500;200x500 -> 200x500.Выровняйте самый маленький (200x500) по центру, заполните пробелы (2 пробела: (375-200) / 2 = 88) белым (255,255,255).