Изменить размер изображения до определенного значения высоты в ImageMagick?

27

Я искал вокруг этого и не могу найти легко реализуемое решение.

В настоящее время я работаю над приложением, которое занимается панорамами. Поскольку они выходят из процесса пакетного стежка, размеры в среднем 18000x4000. Используя ImageMagick, как я могу уменьшить эти изображения до определенного значения высоты при сохранении соотношения сторон?

В соответствии с руководством, convertдля изменения размера требуются высота и ширина при сохранении одинакового соотношения сторон. Я хотел бы добавить 600 и 1000 в мою существующую функцию сценария изменения размера и иметь как обычное видимое изображение, так и уменьшенный размер.

Джейсон
источник
IIRC использует меньший размер в качестве базы для операции изменения размера, т. Е. Если вы укажете что-то вроде 20000x600, он будет использовать высоту 600 в качестве базы для расчета преобразованной ширины, чтобы сохранить соотношение сторон. Я ясно дал понять?
Деви
Это должен быть ImageMagick? Команды Phatch могут быть записаны в сценарии, команда 'fit' делает именно то, что вы ищете. photobatch.wikidot.com/action-fit
Veazer

Ответы:

37

В соответствии с документацией ImageMagick я предлагаю использовать -geometry x600, тогда как x600означает, что новое изображение имеет высоту 600 пикселей с тем же соотношением сторон, что и старое изображение.


Для одного изображения вы можете запустить:

convert input.png -geometry x600 output.png

Если вы предпочитаете конвертировать все образы папки за один прогон, переключитесь на нее (т.е. cd ~/Pictures/panoramas/) и используйте

mogrify -geometry x600 *.png

Но будьте осторожны с этим, потому что он перезаписывает исходные файлы изображений . Чтобы избежать этого вы могли

  1. создать новую папку ( mkdir ~/Pictures/panoramas/small)
  2. скопируйте изображения в эту папку ( cp ~/Pictures/panoramas/*.png ~/Pictures/panoramas/small) и
  3. отредактируйте изображения в этой новой папке ( cd ~/Pictures/panoramas/small && mogrify -geometry x600 *.png).
Jakob
источник
1

Чтобы изменить размер всех файлов в папке, можно использовать что-то вроде

mogrify - изменить размер 800x1094! * jpg # сохранить соотношение сторон изображения

--- изменить размер и расширение по мере необходимости


источник
1
Это не поддерживает соотношение сторон исходного изображения
Роб
1
@Rob, если вы хотите сохранить соотношение сторон, оставьте "!" вне.
Эрик
Спасибо @Erick, он довольно старый, но я, вероятно, указывал, что этот ответ не отвечает правильно, так как ОП хотел сохранить соотношение сторон. : D
Роб