Используя ImageMagick, как может, я изменяю размер изображения, чтобы иметь минимум:
и также имейте максимум:
ОБНОВЛЕНИЕ:
В случае, если это помогает, вот дальнейшее объяснение того, что я испытываю.
У меня есть буч изображений со всеми различными размерами отношения. Некоторые изображения имеют 1:5 отношения высоты/ширины. Некоторые имеют 5:1 отношения высоты/ширины. Так, чтобы я хотел сделать, установлен, что минимальный размер высоты/ширины для изображения, но также и не хочет, чтобы размер изображения был больше, чем конкретный размер.
Если я должен применить белое дополнение к изображению, чтобы заставить его соответствовать в рамках моего ограничения так, чтобы я не искажал изображение, я хотел бы сделать так.
Я не могу полностью подумать о вашем требовании, но я думаю, что это должно быть возможно, если вы запустите IM дважды.
См. руководство по параметрам геометрии:
Комбинация
widthxheight> Изменять в соответствии с widthxheight, но только если размер изображения превышает указанное измерение.
и
widthxheight^ Минимальные значения ширины и высоты указаны, соотношение сторон сохранено.
может сделать свое дело. Тем не менее, для изображений, соотношение сторон которых выходит за рамки ваших требований, я думаю, что вам придется создать холст фиксированного размера в IM, заполнить его каким-то цветом, вставить изображение и сделать trim()
на нем... Хотя, вероятно, это невозможно за один раз.
Хорошо, я делаю аналогичную обработку. У меня нет общего решения для произвольных размеров и пропорций, но если ваш входной набор изображений составляет 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}"
Этот пример предполагает фиксированный набор желаемых размеров, но, конечно, вы можете сделать некоторую базовую арифметику, используя исходные размеры в качестве входных данных и масштабирование пропорционально, чтобы соответствовать заявленным границам.