ImageMagick - как осуществить минимальные высоты/ширины / макс. высоты/ширины?

Используя ImageMagick, как может, я изменяю размер изображения, чтобы иметь минимум:

  • высота 150 пкс
  • ширина 200 пкс

и также имейте максимум:

  • высота 225 пкс
  • ширина 275 пкс

ОБНОВЛЕНИЕ:

В случае, если это помогает, вот дальнейшее объяснение того, что я испытываю.

У меня есть буч изображений со всеми различными размерами отношения. Некоторые изображения имеют 1:5 отношения высоты/ширины. Некоторые имеют 5:1 отношения высоты/ширины. Так, чтобы я хотел сделать, установлен, что минимальный размер высоты/ширины для изображения, но также и не хочет, чтобы размер изображения был больше, чем конкретный размер.

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

12
задан Henryh 6 May 2010 в 17:06
поделиться

2 ответа

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

См. руководство по параметрам геометрии:

Комбинация

widthxheight> Изменять в соответствии с widthxheight, но только если размер изображения превышает указанное измерение.

и

widthxheight^ Минимальные значения ширины и высоты указаны, соотношение сторон сохранено.

может сделать свое дело. Тем не менее, для изображений, соотношение сторон которых выходит за рамки ваших требований, я думаю, что вам придется создать холст фиксированного размера в IM, заполнить его каким-то цветом, вставить изображение и сделать trim() на нем... Хотя, вероятно, это невозможно за один раз.

12
ответ дан 2 December 2019 в 05:53
поделиться

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

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

INPATH="path/to/your_file.jpg"
DIMS=`identify "${INPATH}" | awk '{print $3}'`
WIDTH=`echo "${DIMS}"| cut -dx -f1`
HEIGHT=`echo "${DIMS}"| cut -dx -f2`
if (( ${WIDTH} > ${HEIGHT} ));
then
    #file is in landscape orientation
    THUMBDIM="80x60"
    WEBDIM="624x480"
else
    #file is in portrait orientation
    echo -n "(Portrait orientation) "
    THUMBDIM="60x80"
    WEBDIM="480x624"
fi

Шаг 2, сделайте фактическое изменить размер:

convert "${INPATH}" -resize "${THUMBDIM}" "resized-${INPATH}"

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

7
ответ дан 2 December 2019 в 05:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: