Пакетное уменьшение изображений в консоли

Иногда возникают задачи когда на сервере надо изменить размер (высоту и ширину) всех изображений в каталоге. Как вариант можно скачать весь каталог а затем с помощью своего любимого графического редактора сделать изображения нужного размера. Но есть способ сделать это на сервере гораздо быстрее, конечно если у вас есть возможность установить набор утилит imagemagic. Я пользуюсь Ubuntu и все примеры даны именно для этого дистрибутива, но думаю в других дистрибутивах установка и использование не будет сильно отличаться.

Установка

$ sudo apt-get install imagemagick

Теперь начинаем работать с изображениями. Для примера возьмём тукса.

Tux

Крупненький... Будем уменьшать!

$ convert tux.png -resize 150 tux_w150.png

Tux width 150px

Вот так мы его сделали шириной в 150px, а высота рассчиталась автоматически под заданную ширину и получилась 180px. Если вам надо наоборот фиксированную высоту и плавающую ширину, то используйте идём дальше.

$ convert tux.png -resize x150 tux_h150.png

Tux height 150

Теперь высота 150px, а ширина 125px.

Но что если нам надо вписать изображение допустим в 100х100? Нам надо просто задать сразу обе величины.

$ convert tux.png -resize 100x100 tux_100x100.png

Tux 100x100

Imagemagic просто взял большую сторону которая не вписывается в желаемые размеры и относительно этой стороны (в нашем случае высоты) он уменьшил изображение.

Вроде бы всё хорошо, но что если наше изображение будет слишком вытянутое в какую либо сторону - или слишком широкое или слишком длинное, а нам нужна квадратная миниатюра? Тогда нам потребуется использовать обрезку изображения. Но в начале нам надо что бы не одна сторона не была меньше 100px.

$ convert tux.png -resize 100x100^ tux_100x100_max.png

Tux 100x100 max

Tux получился 100x120, теперь обрежем его, оставив центральную часть.

$ convert tux.png -resize 100x100^ -gravity Center -crop 100x100+0+0 +repage tux_100x100_crop.png

Tux 100x100 crop

Сложнее, но общий смысл должен быть понятен. У параметра gravity могут быть следующие значения:

  • NorthWest - левый верхний угол
  • North - верх по центру
  • NorthEast - верхний правый угол
  • West - левый край по центру
  • Center - центр изображения (то что использовали мы)
  • East - правый край по центру
  • SouthWest - нижний левый угол
  • South - низ по центру
  • SouthEast  - нижний правый угол

 

Так же хотелось бы сказать о смещение обрезки ;-gravity Center -crop 100x100+0+0 , +0+0 означает на сколько необходимо сместить от позиции gravity регион обрезки.

 

Кому мало, то можно ещё почитать:

  1. Обрезка изображения - http://www.imagemagick.org/Usage/crop/
  2. Изменение размера - http://www.imagemagick.org/Usage/resize/
  3. Немного о том же самом, но на русском - http://help.ubuntu.ru/wiki/imagemagick

Автор: Сергей Степанов

Поделиться @

Пока нет коментариев. Будьте первым!