Сжимаем, обрезаем, поворачиваем и применяем фильтры к сотням изображений одним нажатием клавиши 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]
Toaster:
[bash]
for i in *.png; do convert -modulate 150,80,100 -gamma 1.2 -contrast -contrast "$i" "${i/.png}"_toaster.jpg; done
[/bash]
Nashville:
[bash]
for i in *.png; do convert -contrast -modulate 100,150,100 -auto-gamma "$i" "${i/.png}"_nashville.jpg; done
[/bash]
Lomo:
[bash]
for i in *.png; do convert -channel R -level 33% -channel G -level 33% "$i" "${i/.png}"_lomo.jpg; done
[/bash]
Kelvin:
[bash]
for i in *.png; do convert -fill ‘rgba(255,153,0,0.5)’ "$i" "${i/.png}"_kelvin.jpg; done
[/bash]
Не всегда получается точно как в Instagram, но фильтры красивые. Эксперементируя со значением параметров, вы можете скомпоновать собственную неповторимую комбинацию визуальных эффектов.
Если вы знаете какие-то другие классные фильтры для ImageMagick, пишите их в комментарии.
18 комментариев
Форум →Думаю, что способ не очень жизненный. Для профессионального преобразования снимков никто так баловаться не будет, а предпочтет Lightroom или аналоги, а любители вообще не будут заморачиваться преобразованием, выгружая в соц сети все содержимое галереи, онлайн редакторы сейчас сами предложат все подрезать или подогнать не говоря уже о фильтрах.
@Артём Суровцев, и c помощью Shell Script можно сильно расширить возможности ImageMagick. Допустим проверять по exif время суток в которое был сделан снимок и в зависимости от этого накладывать нужный фильтр. Так можно быстро мгновенно преобразить серию снимков пейзажей из отпуска. Или выбирать команды для обработки в зависимости от имени файла. Пакетное преобразование в Lightroom так не может. Если задуматься, то утилите можно найти массу практических применений.
Извините за оффтоп, но срочно: Xiaomi Mi band после рассинхронизации нету в списке видимых устройств Bluetooth и никак не находит. iPhone 5 9.2, на iPhone 5S 9.2 прошивке тоже пробовали – никак не ищет.
@vorromal, вы на наш форум зайдите с этим, пожалуйста)
@vorromal, Батарейка села? Мой также умирал. После очередной прошивки пропал из видимости, выяснилось что села батарейка. Зарядил, через 2 дня снова пропал – опять села. Вообщем, батарейка стала садиться за 2-3 дня. Мне надоело и я его разобрал. Молотком )
Проработал около 4 месяцев. Очень жаль, я к нему привык. Новый покупать не хочу )
@Артём Суровцев, пример 1. Написал человек большую статью/мануал и сделал 50/150 скринов разного размера. Их нужно сделать нужной ширины и преобразовать в JPG. Он не профессионал в графике и Lightroom у него нет. Ему тратить час-два преобразовывая картинки по одной или платить за Lightroom?
@Ирина Чернова, Automator без вариантов! http://www.iphones.ru/iNotes/442609 функционал больше и область применения шире, потом можно другие вещи автоматизировать
@Артём Суровцев, с точки зрения графики у Automator функций гораздо меньше чем у ImageMagick) В разы) Эта статья отражает 0.1% возможностей ImageMagick) + ImageMagick работает под Windows/Linux.
@Ирина Чернова, ну другие платформы мы не обсуждаем, про функционал ImageMagick я судить не могу, но автоматор один раз разобрался и автоматизируешь все, что хочешь, а тут только ради фото вникать. Вспомни свой первый пример, если человеку просто нужно сделать однотипную операцию. Зачем ему вникать в стороннюю программу, когда лучше изучить стандартный софт, который пригодится не только для обработки фото. А если там так много возможностей, мы возвращаемся к моей первой претензии: профессионал использует серьезный софт, а любитель не будет заморачиваться.
@Артём Суровцев, кого ты имеешь ввиду под словом профессионал?:-)
@Ирина Чернова, c точки зрения непрофессионалов возможностей Автоматор им за глаза, ставить фильтры в зависимости от времени суток, сильно сомневаюсь, что простому пользователю это нужно, ну или он уже не просто пользователь. между пользователем и профессионалом существует еще “пользователь со стажем”, “продвинутый пользователь”, “любитель” и т.д.
к тому же возможности Автоматор намного шире только пакетной обработки графики, что для среднего пользователя намного полезнее чем улитка для обработки пакетных картинок
@admiless, абсолютно с вами согласна – автоматор супер вещь и многие пользователям его за глаза хватит)
Но технические статьи для того и пишутся, чтобы расширять горизонты сознания и давать человеку представление о разных способах решения проблем.
Касательно проблемы пакетной обработки фотографий:
1) С ImageMagick это сделать быстрее в несколько раз. При постоянно м использовании набор команды занимает несколько секунд.
2) Посредством Shell Script ImageMagick можно объединить с множеством других автоматизирующих инструментов.
3) Этой “утилитке”, лет больше чем мне и за годы развития этого проекта в нее было добавлено столько возможностей что документацию к ней и за сутки не прочитаешь. Слово утилитка, как то не очень к ImageMagick подходит:-)
@Ирина Чернова, разработчики проекта в курсе, что улитка = утилита, молодое поколение не в курсе конечно :)
если нужно ежедневно и по несколько раз повторять одно и то же действие, по мне проще написать скрипт, который будет это делать по горячим клавишам, ярлыку или таймеру.
можно соединить данную утилиту и автоматор, будет еще быстрее. открываете папку, в меню служб запускаете нужный скрипт. не нужно запускать терминал, набирать команду и параметры
для других ОС так-же пишется скрипт, при этом никто не запрещает добавлять опции (можно с запросом параметров) по мере необходимости. экономия времени будет еще более заметна
@admiless, “можно соединить данную утилиту и автоматор, будет еще быстрее” – да отличный вариант)
и любую строчку из статьи можно превратить в исполняемый файл, а потом привязать его выполнение к сочетанию клавиш или занести в cron) консольные утилиты – квинтэссенция гибкости и скорости)
p.s. С исключительной полезностью Automator я не спорю:-)
Подскажите, возможно ли для нескольких десятков фото, скинутых в одну папку, наложить водяной знак?
Все фотки одного размера, водяной знак сделан на прозрачном фоне..)
@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). Будут вопросы – пишите:-)
Внимание вопрос: Для чего эти сакральные знания?
99% пользователей этим пользоваться не будут ибо не сильны в программировании.
Те же, кому это нужно, нагуглят ответ и так.
PS: я-ведущий разработчик, если что.
@gga, какое тут программирование? Все делается одной строкой команды. Сложностей тут нет. Это очень простой и очень быстрый способ пакетной обработки изображений.
Те кому нужно, станут гуглить ответ и придут на iphones)
Нашли орфографическую ошибку в новости?
Выделите ее мышью и нажмите Ctrl+Enter.Как убрать таймер отключения и перезагрузки в macOS
Как отключить синхронизацию документов в iCloud?
Почему на iPhone и Mac перестала работать почта Mail.ru
В Finder пропадает Избранное. Как вернуть?
Как на iPhone просмотреть все купленные приложения?
Как отключить проверку возраста при просмотре видео на YouTube
Как заказать новый наушник AirPods взамен потерянного
Что делать, если iPhone постоянно перезагружается