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

Ирина Чернова avatar | 18
FavoriteLoading В закладки
Автоматизируем редактирование изображений в OS X

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

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

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

Вот ее инсталлятор для инструкцией по установке на официальном сайте.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Фильтры

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

Gotham:

[bash]
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
[/bash]

tour_effel_new_gotham

Toaster:

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

tour_effel_new_toaster

Nashville:

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

tour_effel_new_nashville

Lomo:

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

tour_effel_new_lomo

Kelvin:

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

tour_effel_new_kelvin

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

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

1 Звезд2 Звезды3 Звезды4 Звезды5 Звезд (1 голосов, общий рейтинг: 5.00 из 5)
undefined
iPhones.ru
Сжимаем, обрезаем, поворачиваем и применяем фильтры к сотням изображений одним нажатием клавиши Enter. Некоторые люди имеют привычку фоткаться на телефон у каждого столба и проводят долгие часы за Photoshop, обрезая, поворачивая, улучшая качество и накладывая фильтры на фотографии. Это точно такая же рутинная работа, как копирование данных между листами в Excel. И она безусловно требует...
Прокомментировать

🙈 Комментарии 18

  1. Артём Суровцев avatar
    Артём Суровцев10 декабря 2015
    1

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

    Ирина Чернова avatar
    Ирина Чернова10 декабря 2015
    1

    @Артём Суровцев, и c помощью Shell Script можно сильно расширить возможности ImageMagick. Допустим проверять по exif время суток в которое был сделан снимок и в зависимости от этого накладывать нужный фильтр. Так можно быстро мгновенно преобразить серию снимков пейзажей из отпуска. Или выбирать команды для обработки в зависимости от имени файла. Пакетное преобразование в Lightroom так не может. Если задуматься, то утилите можно найти массу практических применений.

  2. vorromal avatar
    vorromal10 декабря 2015
    0

    Извините за оффтоп, но срочно: Xiaomi Mi band после рассинхронизации нету в списке видимых устройств Bluetooth и никак не находит. iPhone 5 9.2, на iPhone 5S 9.2 прошивке тоже пробовали – никак не ищет.

    Ирина Чернова avatar
    Ирина Чернова10 декабря 2015
    0

    @vorromal, вы на наш форум зайдите с этим, пожалуйста)

    gga avatar
    gga11 декабря 2015
    0

    @vorromal, Батарейка села? Мой также умирал. После очередной прошивки пропал из видимости, выяснилось что села батарейка. Зарядил, через 2 дня снова пропал – опять села. Вообщем, батарейка стала садиться за 2-3 дня. Мне надоело и я его разобрал. Молотком )
    Проработал около 4 месяцев. Очень жаль, я к нему привык. Новый покупать не хочу )

  3. Ирина Чернова avatar
    Ирина Чернова10 декабря 2015
    0

    @Артём Суровцев, пример 1. Написал человек большую статью/мануал и сделал 50/150 скринов разного размера. Их нужно сделать нужной ширины и преобразовать в JPG. Он не профессионал в графике и Lightroom у него нет. Ему тратить час-два преобразовывая картинки по одной или платить за Lightroom?

    Артём Суровцев avatar
    Артём Суровцев10 декабря 2015
    1

    @Ирина Чернова, Automator без вариантов! http://www.iphones.ru/iNotes/442609 функционал больше и область применения шире, потом можно другие вещи автоматизировать

    Ирина Чернова avatar
    Ирина Чернова10 декабря 2015
    0

    @Артём Суровцев, с точки зрения графики у Automator функций гораздо меньше чем у ImageMagick) В разы) Эта статья отражает 0.1% возможностей ImageMagick) + ImageMagick работает под Windows/Linux.

    Артём Суровцев avatar
    Артём Суровцев11 декабря 2015
    0

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

    Ирина Чернова avatar
    Ирина Чернова11 декабря 2015
    0

    @Артём Суровцев, кого ты имеешь ввиду под словом профессионал?:-)

    admiless avatar
    admiless11 декабря 2015
    0

    @Ирина Чернова, c точки зрения непрофессионалов возможностей Автоматор им за глаза, ставить фильтры в зависимости от времени суток, сильно сомневаюсь, что простому пользователю это нужно, ну или он уже не просто пользователь. между пользователем и профессионалом существует еще “пользователь со стажем”, “продвинутый пользователь”, “любитель” и т.д.
    к тому же возможности Автоматор намного шире только пакетной обработки графики, что для среднего пользователя намного полезнее чем улитка для обработки пакетных картинок

    Ирина Чернова avatar
    Ирина Чернова11 декабря 2015
    0

    @admiless, абсолютно с вами согласна – автоматор супер вещь и многие пользователям его за глаза хватит)
    Но технические статьи для того и пишутся, чтобы расширять горизонты сознания и давать человеку представление о разных способах решения проблем.
    Касательно проблемы пакетной обработки фотографий:
    1) С ImageMagick это сделать быстрее в несколько раз. При постоянно м использовании набор команды занимает несколько секунд.
    2) Посредством Shell Script ImageMagick можно объединить с множеством других автоматизирующих инструментов.
    3) Этой “утилитке”, лет больше чем мне и за годы развития этого проекта в нее было добавлено столько возможностей что документацию к ней и за сутки не прочитаешь. Слово утилитка, как то не очень к ImageMagick подходит:-)

    admiless avatar
    admiless11 декабря 2015
    0

    @Ирина Чернова, разработчики проекта в курсе, что улитка = утилита, молодое поколение не в курсе конечно :)
    если нужно ежедневно и по несколько раз повторять одно и то же действие, по мне проще написать скрипт, который будет это делать по горячим клавишам, ярлыку или таймеру.
    можно соединить данную утилиту и автоматор, будет еще быстрее. открываете папку, в меню служб запускаете нужный скрипт. не нужно запускать терминал, набирать команду и параметры
    для других ОС так-же пишется скрипт, при этом никто не запрещает добавлять опции (можно с запросом параметров) по мере необходимости. экономия времени будет еще более заметна

    Ирина Чернова avatar
    Ирина Чернова11 декабря 2015
    0

    @admiless, “можно соединить данную утилиту и автоматор, будет еще быстрее” – да отличный вариант)
    и любую строчку из статьи можно превратить в исполняемый файл, а потом привязать его выполнение к сочетанию клавиш или занести в cron) консольные утилиты – квинтэссенция гибкости и скорости)
    p.s. С исключительной полезностью Automator я не спорю:-)

  4. rustemk avatar
    rustemk11 декабря 2015
    0

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

    Ирина Чернова avatar
    Ирина Чернова11 декабря 2015
    0

    @rustemk, Одно изображение:
    composite -gravity center watermark.png someimage.png

    Изображения из папки:

    for i in *.png; do composite -gravity center watermark.png “$i” “${i/.png}”_marked.png; done

    Не забудьте сделать папку активной (cd). Будут вопросы – пишите:-)

  5. gga avatar
    gga11 декабря 2015
    0

    Внимание вопрос: Для чего эти сакральные знания?
    99% пользователей этим пользоваться не будут ибо не сильны в программировании.
    Те же, кому это нужно, нагуглят ответ и так.

    PS: я-ведущий разработчик, если что.

    Ирина Чернова avatar
    Ирина Чернова11 декабря 2015
    0

    @gga, какое тут программирование? Все делается одной строкой команды. Сложностей тут нет. Это очень простой и очень быстрый способ пакетной обработки изображений.
    Те кому нужно, станут гуглить ответ и придут на iphones)

Вы должны авторизоваться или зарегистрироваться для комментирования.

Нашли орфографическую ошибку в новости?

Выделите ее мышью и нажмите Ctrl+Enter.

Как установить аватар в комментариях?

Ответ вот здесь