Иногда возникают задачи когда на сервере надо изменить размер (высоту и ширину) всех изображений в каталоге. Как вариант можно скачать весь каталог а затем с помощью своего любимого графического редактора сделать изображения нужного размера. Но есть способ сделать это на сервере гораздо быстрее, конечно если у вас есть возможность установить набор утилит imagemagic. Я пользуюсь Ubuntu и все примеры даны именно для этого дистрибутива, но думаю в других дистрибутивах установка и использование не будет сильно отличаться.
Установка
$ sudo apt-get install imagemagick
Теперь начинаем работать с изображениями. Для примера возьмём тукса.
Крупненький... Будем уменьшать!
$ convert tux.png -resize 150 tux_w150.png
Вот так мы его сделали шириной в 150px, а высота рассчиталась автоматически под заданную ширину и получилась 180px. Если вам надо наоборот фиксированную высоту и плавающую ширину, то используйте идём дальше.
$ convert tux.png -resize x150 tux_h150.png
Теперь высота 150px, а ширина 125px.
Но что если нам надо вписать изображение допустим в 100х100? Нам надо просто задать сразу обе величины.
$ convert tux.png -resize 100x100 tux_100x100.png
Imagemagic просто взял большую сторону которая не вписывается в желаемые размеры и относительно этой стороны (в нашем случае высоты) он уменьшил изображение.
Вроде бы всё хорошо, но что если наше изображение будет слишком вытянутое в какую либо сторону - или слишком широкое или слишком длинное, а нам нужна квадратная миниатюра? Тогда нам потребуется использовать обрезку изображения. Но в начале нам надо что бы не одна сторона не была меньше 100px.
$ convert tux.png -resize 100x100^ tux_100x100_max.png
Tux получился 100x120, теперь обрежем его, оставив центральную часть.
$ convert tux.png -resize 100x100^ -gravity Center -crop 100x100+0+0 +repage tux_100x100_crop.png
Сложнее, но общий смысл должен быть понятен. У параметра gravity могут быть следующие значения:
NorthWest
- левый верхний уголNorth
- верх по центруNorthEast
- верхний правый уголWest
- левый край по центруCenter
- центр изображения (то что использовали мы)East
- правый край по центруSouthWest
- нижний левый уголSouth
- низ по центруSouthEast
- нижний правый угол
Так же хотелось бы сказать о смещение обрезки ;-gravity Center -crop 100x100+0+0 , +0+0
означает на сколько необходимо сместить от позиции gravity регион обрезки.
Кому мало, то можно ещё почитать:
Автор: Сергей Степанов
Поделиться @
Пока нет коментариев. Будьте первым!