* Пакетно конвертируем изображения из командной строки

Опубликовано Июнь 1st, 2010 Автор: Игорь. В категории Linux, Ubuntuлогия, Администрирование.

Понадобилось уменьшить размер картинки в Ubuntu. Однако в Lucid Lynx убрали Gimp, а качать такой большой пакет ради редактирования одной картинки не рационально. Да и не нужно, ведь есть замечательная команда convert. Про нее и пойдет речь.
convert – это утилита из пакета программ ImageMagick, который предназначен для обработки растровых (точечных) изображений. Кроме нее, туда входит еще несколько команд, но сегодня они нас интересуют. Итак, прежде всего нужно установить этот пакет, если у вас его еще нет:

sudo apt-get install imagemagick

Теперь в командной строке заходим в каталог, где расположен интересующий нас файл и пишем:

convert image.jpg -resize 50% image_small.jpg

Как нетрудно догадаться – данная команда уменьшит размер картинки в два раза. Кроме ключа -resize еще могут пригодиться частоипользуемые:

-flip перевернет изображение вертикально
-flop отзеркалит его горизонтально
-quality задает качество нового изображения в % (-quality 90%)

Конечно в качестве параметра к ключу -resize можно указать и точные величины в пикселях:

convert image.jpg -resize 800×600 image2.jpg

Все ключи можно узнать просто введя convert.

Перейдем к пакетной обработке. Данная команда переконвертирует все файлы с расширением *.jpg в текущем каталоге:

for f in *.jpg ; do convert -resize 800×600 “$f” “$f”; done

В данном случае новые изображения перепишут имеющиеся. Что бы такого не было я обычно создаю новый каталог и сохраняю измененные фотографии туда:

mkdir resize; for f in *.jpg ; do convert -resize 800×600 “$f” “resize/${f%.jpg}-resize.jpg” ; done

Таким образом мы сначала создаем новый каталог resize, конвертируем изображения и сохраняем их в новой каталог, добавляя к имени файла -resize. Для этого командой %.jpg мы отрезаем текущее расширение и добавляем свою строчку -resize.jpg.

Кроме того, если в папке много фотографий всегда можно задать фильтр. Например, моя камера всем фотографиям делает префикс P в названиях файлов. Т.е. Pxxx.JPG. Поэтому команда будет выглядеть так:

mkdir resize; for f in P*.jpg ; do convert -resize 800×600 “$f” “resize/${f%.jpg}-resize.jpg” ; done

Вот, пожалуй, и все. Быстро и удобно.

Теги: , , , , , , , ,



Требрек URL | Комментарии RSS

Оставьте комментарий