Автоматизация рутины в OS X. Урок 1. Пакетная обработка изображений
В процессе работы над сайтом/статьей/курсовой/презентацией иногда приходится сталкиваться с задачей приведения большего числа картинок к единому размеру и формату. Эта весьма скучная и однообразная работа, если делать ее руками с помощью графического редактора. Но если доверить ее командной строке, то она магическим образом превращается в удивительно легкую и приятную.
Что мы научимся делать?
Менять размер картинок и конвертировать их из одного формата в другой с помощью OS X Terminal.
Как открыть Terminal?
В Finder открыть папку Macintosh HD -> Программы -> Утилиты и найти в ней иконку приложения Terminal.
В результате на экране должно появиться такое окно.
Как сделать чтобы окно терминала выглядело как в фильмах про хакеров?
- Открыть «Настройки».
- На панели настроек выбрать вкладку «Профили» и два раза щелкнуть на теме «Homebrew».
Как изменить размер картинки?
Обработка картинок осуществляется с помощью утилиты sips. Изменение размера изображений осуществляется с помощью команды -z. Пример:
sips -z 640 430 example.png
Выполнение этой команды сделает высоту картинки example.png равной 640 пикселям, а ширину 430. Обратите внимание на порядок указания значений в команде. Сначала пишется высота, а потом ширина.
А что делать если у изображения нужно изменить размер только одного измерения? Здесь пригодятся команды --resampleHeight и --resampleWidth.
sips --resampleHeight 640 example.png
Вторая сторона изменит размер в соответствии с исходными пропорциями изображения.
Как изменить размер всех картинок в текущей папке?
Затевать работу с «Терминалом» ради обработки одного изображения нерационально. То ли дело когда нужно подравнять ширину у сотни-другой картинок. Их нужно сложить в папку из которой запущен Терминал и выполнить следующую команду:
sips
--resampleHeight
640 *.png
Это команда изменит высоту у всех картинок формата .png в текущей папке. Если нет желания копировать изображения в корневую папку пользователя, которая по умолчанию является активной, то можно перейти в папку, в которой лежат картинки с помощью команды cd:
cd img
А что делать если изображения, которые надо обработать хранятся в файлах разных форматов? Их можно привести к единому формату.
Как конвертировать картинку из одного формата в другой?
Это делается с помощью все той же утилиты sips и команды -s, для выполнения которой надо указать формат, имя файла для конвертации и имя для выходного файла.
sips -s format png example.jpg --out example.png
Как изменить формат всех картинок в определенной папке?
Для того чтобы изменить формат всех изображений в заданной директории необходимо выполнить нижеприведенную команду для всех имеющихся в папке форматов изображений:
for i in *.jpg; do sips -s format png $i --out forSite/$i.png;done
Здесь мы добавили немного bash-скриптинга. Этот код поочередно перебирает все файлы формата .jpg в текущей папке, конвертирует png и складывает в папку forSite.
Другие статьи серии «Автоматизация рутины в OS X»:
Урок 2. Генерация слайдов для презентаций.
✅ Подписывайтесь на нас в Telegram, ВКонтакте, и Яндекс.Дзен.