пятница, 17 сентября 2010 г.

Групповое изменение размера изображений

Последнее время часто приходится обрабатывать фотографии для сайтов. Необходимо из фотки большого размера получить 2 фотки одну не больше 800х600 и другую не больше 130х98.
Пока фоток было мало справлялся Gimp. Но когда каждый день более 10 фоток. Немного покурив описание скриптового языка гимпа я понял что быстро он не сдастся. Поэтому вспомнил про замечательный пакет Image Magick - который есть в репозиториях любого linux дистрибутива.
IM (image magick) - это графический редактор работающий в консоли. Моя проблема с групповым изменением размера картинок решилась так:
переходим в каталог с фотками (предположим это файлы с расширением jpg) и выполняем команду
ls *.jpg | xargs -I FILE convert FILE -thumbnail 130x98 FILE_s.gif
ls - сгенерировал список файлов в текущей директории.
xargs - взял результаты работы ls и передал их convert
convert - уменьшил файлы и сохранил уменьшенные копии с расширеием gif а так же добавил к имени файла "_s"
P.S. если необходимо преобразовать файлы из нескольких подкаталогов, то можно воспользоваться такой комбинацией:
find . -type f | sed "s#^.#$(pwd)#" | xargs -I FILE convert FILE -thumbnail 800x600 FILE_b.jpg