Автоматизируем редактирование изображений в OS X

Сжимаем, обрезаем, поворачиваем и применяем фильтры к сотням изображений одним нажатием клавиши Enter.

Некоторые люди имеют привычку фоткаться на телефон у каждого столба и проводят долгие часы за Photoshop, обрезая, поворачивая, улучшая качество и накладывая фильтры на фотографии.

Это точно такая же рутинная работа, как копирование данных между листами в Excel. И она безусловно требует автоматизации. В этом нам поможет проверенное средство с 25-летней историей — консольная утилита для обработки изображений ImageMagick.

Вот ее инсталлятор для OS X. А пользователи других операционных систем могут воспользоваться инструкцией по установке на официальном сайте.

Как обрабатывать сразу все изображения в папке

Создаем папку, складываем туда изображения, открываем терминал (или командную строку), с помощью команды cd (ChangeDir) делаем эту папку активной и вводим нужные команды.

Пример конвертации всех png файлов каталога в jpg на Shell Script (для OS X/Linux):

for i in *.png; do convert -resize 180x180 "$i" "${i/.png}"_new.jpg; done

Для винды надо набирать тоже самое, но без точек с запятой.

Меняем размер изображений

Начнем с самого сложного. Как сделать у изображений нужный размер, чтобы они не потеряли при этом товарный вид?

Есть топорный вариант. Просто задать нужную ширину и высоту:

for i in *.png; do convert -resize 180x180 "$i" "${i/.png}"_resized.png; done

Можно изменить только высоту изображения, сохраняя при этом исходные пропорции:

for i in *.png; do convert -resize x180 "$i" "${i/.png}"_resized.png; done

Или только ширину:

for i in *.png; do convert -resize 180 "$i" "${i/.png}"_resized.png; done

Оставшуюся сторону можно довести до кондиции с помощью ручной или автоматической обрезки:

for i in *.png; do convert -crop 600x600+300+300 "$i" "${i/.png}"_croped.png; done

Что означает 600×600+300+300? Первые две цифры это ширина и высота поля для обрезки, а вторые это отступы левого верхнего угла поля обрезки от левого верхнего угла изображения.

Если изображение уже имеет нужные пропорции, то для изменения размера его можно просто масштабировать:

for i in *.png; do convert -resize 50% "$i" "${i/.png}"_resized.png; done

Список рекомендуемых размеров картинок для загрузки в соцсети:

  • Пост Вконтакте 700×500 px;
  • Аватар в Twitter 400×400 px;
  • Шапка в Twitter 1 500×500 pх;
  • Шапка в Facebook Cover Photo 851×315 pх;
  • Аватар в Facebook 180×180 px;
  • Аватар Google+ 250×250 px;
  • Google+ Cover Pictures 1 080×608 px;
  • Фотографии в Facebook 1 200×630 px;
  • Фотографии в Google+ 497×373 px;
  • Аватар Instagramm 110×110 px;
  • Фото Instagramm 640×640 px;
  • Instagramm Thumbnail 161×161 px;
  • Аватар Pinterest 165×165 px;
  • Ширина пинов 236 px;
  • Картинки для Tumblr 570×750 px;

Сжатие изображений

На многих сайтах установлены ограничения по размеру загружаемых картинок, в целях снижения загрузки на сервер. И в свой блог тоже не нужно вствлять файлы весом в несколько мегабайт, иначе читатели, заходящие с мобильного интернета, будут в гневе покидать его.

Вот пример маленького универсального скрипта для сжатия изображений в jpg c качеством 51%:

for i in *.png; do convert -strip -quality 51% "$i" "${i/.png}"_compressed.jpg; done    

Если исходная картинка весит 299Кб, то на выходе получится файл весом 20kб. ImageMagick отлично умеет сжимать не только png, но также tiff и другие форматы изображений.

Примечание: все команды из этой статьи не нужно запускать по отдельности. Что бы их объединить нужно выбрать нужные примеры команд, скопировать из них параметры для утилиты convert и вставить все в одну.

Улучшаем качество

После сжатия можно подумать и о качестве изображения. Немного снизим уровень шума:

for i in *.png; do convert -level 35% "$i" "${i/.png}"_reducenoise.jpg; done 

Если вместо 1.3 поставить 2, то размытие будет уже явно заметным.

Большинству снимков не помешает чуть-чуть повысить контрастноcть:

for i in *.png; do convert -contrast "$i" "${i/.png}"_contrast.jpg; done 

И добавить немного света:

for i in *.png; do convert -brightness-contrast +10 "$i" "${i/.png}"_brightness.jpg; done 

Если фотка совсем плохая, то можно преобразовать ее в черно-белую:

for i in *.png; do convert -colorspace GRAY "$i" "${i/.png}"_gray.jpg; done 

Поворот изображений

При съемке на телефон иногда случается, что целая серия фотографий выходит не той пространственной ориентации. Повернуть все изображения в папке на бок можно простой строкой кода:

for i in *.png; do convert -rotate 90 "$i" "${i/.png}"_rotate.jpg; done

Добавить немного шарма фотографиям, а заодно и сделать их уникальными c точки зрения поисковых систем (если сейчас эта фишка уже не работает, извините) поможет легкий поворот на несколько градусов:

for i in *.png; do convert -rotate 2 "$i" "${i/.png}"_brightness.jpg; done

Фильтры

Энтузиасты еще несколько лет назад перевели популярные фильтры Instagramm на язык команд Image Magick. Приведем несколько примеров.

Gotham:

for i in *.png; do convert -modulate 120,10,100 -fill '#222b6d' -colorize 20 -gamma 0.5 -contrast -contrast "$i" "${i/.png}"_gotham.jpg; done 

tour_effel_new_gotham

Toaster:

for i in *.png; do convert -modulate 150,80,100 -gamma 1.2 -contrast -contrast "$i" "${i/.png}"_toaster.jpg; done 

tour_effel_new_toaster

Nashville:

for i in *.png; do convert -contrast -modulate 100,150,100 -auto-gamma "$i" "${i/.png}"_nashville.jpg; done 

tour_effel_new_nashville

Lomo:

for i in *.png; do convert -channel R -level 33% -channel G -level 33% "$i" "${i/.png}"_lomo.jpg; done 

tour_effel_new_lomo

Kelvin:

for i in *.png; do convert -fill 'rgba(255,153,0,0.5)' "$i" "${i/.png}"_kelvin.jpg; done 

tour_effel_new_kelvin

Не всегда получается точь-точь как в Instagramm, но фильтры красивые. Эксперементируя со значением параметров, вы можете скомпоновать собственную неповторимую комбинацию визуальных эффектов.

Если вы знаете какие-то другие классные фильтры для ImageMagick, пишите их в комментарии.

©  iphones.ru