2012-06-26 2 views
0

Мне дается изображение неизвестного размера. Я хочу сжать его так, чтобы он соответствовал либо 640x480, либо 480x640, сохраняя соотношение сторон. Я хочу, чтобы изображение уменьшало минимальное количество (например, результат должен быть максимального размера, который соответствует либо 640x480, либо 480x640).ImageMagick изменение размера до абстрактного прямоугольника

Например, если у меня есть изображение 800x800, оно должно уменьшаться до 480x480. Если у меня есть изображение 500x1000, оно должно уменьшаться до 320x640. Точно так же 1000x500 должно стать 640x320.

Могу ли я сделать это в ImageMagick в одной команде? Не должно происходить обрезка, а соотношение сторон исходного изображения должно быть сохранено. Благодаря!

+0

Возможный дубликат [Изменение размера ВПР изображения к его высоте и ширине] (http://stackoverflow.com/questions/9003490/resizing- ан-изображение-WRT к своей высоте, и ширина) – blahdiblah

ответ

1

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

С geometry specification docs, изменение размера overlarge изображение в разрешении 640x480 легко:

convert input.png -resize 640x480> output.png 

Это будет изменять только в случае необходимости, не подрезать, и сохранить соотношение сторон.

В зависимости от входных изображений, вы можете быть в состоянии использовать оператор области:

convert input.png -resize $((640*480))@ output.png 

Но это будет работать только тогда, когда все входные изображения уже имеют либо соотношение 4/3 или 3/4 сторон ,

Я думаю, что вам лучше всего короткий сценарий оболочки:

wider_than_tall=`identify -format %w/%h input.png` 
if (($wider_than_tall)); then 
    convert input.png -resize 640x480> output.png 
else 
    convert input.png -resize 480x640> output.png 
fi 
Смежные вопросы