определить ориентацию изображения с помощью ImageMagick

Я хочу изменить размер изображения до нового размера, используя один параметр: Ширина.

Если изображение горизонтальное, новый размер будет следующим: ширина = ширине, высота = пропорциональна ширине.

А если картинка вертикальная, новый размер будет: высота = ширине, ширина = пропорциональна высоте.

Есть идеи, как это реализовать?

Я использую ImageMagick с оболочкой MagickNet.


person Fitzchak Yitzchaki    schedule 21.02.2010    source источник
comment
Название вопроса несколько несовместимо с телом. На самом деле это не определение ориентации, а скорее проблема изменения размера. Да?   -  person o.k.w    schedule 21.02.2010
comment
o.k.w: Мне нужны они оба. Я хочу изменить размер изображения после того, как узнаю его ориентацию.   -  person Fitzchak Yitzchaki    schedule 21.02.2010
comment
Я понимаю. Я обновил свой ответ, посмотрите.   -  person o.k.w    schedule 21.02.2010
comment
Вы говорите, что хотите изменить размер всех изображений, чтобы они имели одинаковую ширину?   -  person Gabe    schedule 21.02.2010


Ответы (2)


Из справочника по использованию на странице http://www.imagemagick.org/Usage/resize/.

convert org.jpg    -resize widthxwidth  final.jpg

например ширинаxширина может быть 256x256

Соотношение сторон будет сохранено, а изменение размера будет выполнено в пределах квадрата 256 X 256 пикселей.

Цитата со страницы выше:

При изменении размера изображение будет соответствовать требуемому размеру. Он НЕ заполняет запрошенный размер коробки.

person o.k.w    schedule 21.02.2010
comment
@o.k.w: именно то, что я ищу. Я собираюсь проверить это с помощью MagickNet. - person Fitzchak Yitzchaki; 21.02.2010
comment
У вас есть идеи, как я могу реализовать это в .net? - person Fitzchak Yitzchaki; 21.02.2010
comment
@Menday, я бы порекомендовал вам задать новый вопрос на ImageMagick.NET :) - person o.k.w; 21.02.2010

Я не уверен, что именно вы имеете в виду здесь. Вы говорите, что просто хотите определить ширину, но в «вертикальном» случае вы устанавливаете высоту как ширину? В любом случае, если вы хотите изменить размер чего-либо, используя только ширину, используйте этот псевдокод:

ratio = width / height
newWidth = <the new width>
newHeight = newWidth / ratio

Если вы хотите изменить размер самого длинного размера до заданного значения, попробуйте следующее:

ratio = width / height

if ratio > 1   // wider than it is tall
    newWidth = <theValue>
    newHeight = newWidth / ratio

else           // taller than it is wide
    newHeight = <theValue>
    newWidth = newHeight * ratio
person nickf    schedule 21.02.2010
comment
Я предполагаю, что «Ширина» является граничным/самым длинным значением, так что это ваше второе решение :) - person o.k.w; 21.02.2010
comment
Я имел в виду второй. Но у меня нет width и height. У меня есть путь к изображению и целевые параметры самого длинного размера. - person Fitzchak Yitzchaki; 21.02.2010