Как изменить размер изображения в imagemagick, но сохранить соотношение сторон постоянным - PullRequest
1 голос
/ 19 июня 2019

Я пытаюсь изменить размер изображения (используя imagemagick), чтобы сохранить его текущее соотношение сторон, но поместил его в контейнер 4/3.

Это команда, которая у меня есть до сих пор:

magick convert ./horse.jpeg -background white -gravity center -extent 4/3 ./hourse_output.jpeg

Вот что я хотел бы: horse.Как видите, изображение «помещено» в контейнер 4/3.

Ответы [ 3 ]

1 голос
/ 20 июня 2019

Моя ошибка. Соотношения сторон, такие как 4: 3 в ImageMagick -extent, будут обрезаться, а не заполняться

Смотрите мой скрипт bash unix "aspectpad" по адресу http://www.fmwconcepts.com/imagemagick/index.html,, который делает то, что вы хотите, я думаю.

Тем не менее, вот частичное решение, как это сделать. Но это работает только для ввода в ландшафтном режиме. Также только с ImageMagick 7 из-за использования встроенных аргументов для -extent. Вам придется изменить его для портретного режима.

Ввод (аспект 2: 1 = 2/1 = 2):

enter image description here

magick barn_2to1.jpg -set option:wd "%[fx:(4/3)>(w/h)?(4/3*h):w]" -set option:ht "%[fx:(4/3)>(w/h)?h:(w/(4/3))]" -gravity center -background black -extent "%[wd]x%[ht]" result.jpg


Вывод (аспект 4: 3 = 4/3 = 1,33):

enter image description here

Обратите внимание, что я использовал черный фон, чтобы он был здесь виден. Измените цвет на любой другой.

Если входной альбомный формат больше 4: 3 (4/3), он будет накладываться сверху / снизу. Если формат входного пейзажа меньше 4: 3, он будет дополняться влево / вправо.

Ввод (аспект = 1: 1 = 1/1 = 1):

enter image description here

magick lena.jpg -set option:wd "%[fx:(4/3)>(w/h)?(4/3*h):w]" -set option:ht "%[fx:(4/3)>(w/h)?h:(w/(4/3))]" -gravity center -background black -extent "%[wd]x%[ht]" result2.jpg


enter image description here

0 голосов
/ 20 июня 2019

Вот еще один способ сделать это в ImageMagick, если вы знаете, что картинка в альбомной ориентации, а размер изображения с ч / б больше, чем 4/3. Просто заполните верх и низ большим количеством места, а затем используйте -extent 4: 3, чтобы обрезать его. Таким образом, никакие вычисления не требуются, поэтому он должен работать в ImageMagick 6 или 7. Если ImageMagick 6, измените магию для преобразования. (Если w / h меньше 4/3 пейзажа, то добавьте влево и вправо.)

Введите:

enter image description here

magick barn_2to1.jpg -gravity center -bordercolor black -border 0x100 -background black -extent 4:3 result3.jpg


enter image description here

0 голосов
/ 19 июня 2019

Используйте 4: 3, а не 4/3. Но вы не указали -resize. В ImageMagick 7 используйте только магию, не конвертируйте магию и не конвертируйте. Для других инструментов используйте магическую идентификацию, магическую магию и т. Д. Но не для конвертации. См. Imagemagick.org/script/command-line-processing.php#geometry для проблемы 4: 3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...