Увеличение холста без кадрирования с соотношением сторон 2: 1 с помощью ImageMagick - PullRequest
0 голосов
/ 18 февраля 2020

Я нахожусь в ситуации, когда у меня есть набор изображений с переменной шириной и высотой, и я должен убедиться, что эти изображения соответствуют соотношению сторон 2: 1.

Единственное предположение, которое я могу сделать в том, что эти изображения имеют соотношение сторон больше 2, поэтому мне нужно расширить холст.

С ImageMagick я могу сделать это:

magick input.jpg -background black -gravity north -extent 2:1 output.jpg

Но это кадрирование вместо добавления холста по желанию. Есть ли возможность избежать обрезки, то есть принудительного заполнения изображения? Помните, я не знаю разрешения изображения заранее.

Конечно, с помощью более сложного сценария я могу извлечь размеры изображения и вычислить желаемое разрешение, но я стараюсь по возможности упростить задачу.

PS: изображения поступают с лазерного сканера и будут использоваться в программе просмотра панорам 360, поэтому необходимо соблюдать соотношение сторон без кадрирования.

1 Ответ

3 голосов
/ 18 февраля 2020

С помощью ImageMagick v7 вы можете выполнить ряд встроенных вычислений, которые скорректируют результаты операции -extent для заполнения любого входного размера с соотношением 2: 1. Посмотрите на эту команду в качестве примера ...

magick input.png -gravity center -extent "%[fx:max(w,h*2)]x%[fx:max(w/2,h)]" result.png

Это заполнит любое дополнительное пространство черным. Добавьте -background <somecolor> перед операцией экстента, чтобы изменить цвет отступа.

...