ornic: (Default)
ornic ([personal profile] ornic) wrote2008-01-04 05:33 am
Entry tags:

A kind of magick


     Техпроцесс конвейерной подготовки фотографий к вебликации (будем считать, что я сам придумал это слово, хотя я сделал это не первым, о чем услужливо рассказывает Яндекс) исторически складывался у меня довольно кривым. Любимый и ненаглядный фотошоп не умеет (я не смог) в пакетном режиме ресайзить "вписывая в заданные размеры", т.е. вертикальные и горизонтальные кадры нужно обрабатывать отдельно. Потому для ресайза был приспособлен айсидиси. Но любимый и ненаглядный айсидиси не умеет делать такие рамочки как мне нравится (ну да, я не смог). Потому для рамочек использовался-таки фотошоп. Но они оба не умеют присобачивать подпись так, как мне нравится. И долгое время я мирился с этим, ставя подпись руками на те фотографии, которые проходили ручную обработку, и оставляя остальные кадры сиротливыми безименцами.
     Но, начитавшись уже даже в Компьютерре про чудесный "фотошоп из командной строки", я решил попробовать прикрутить к моему фотофранкенштейну еще и ImageMagick. И прикрутил. У фотофранкенштейна стало 3 ноги (гусары, молчать!), а мои фотографии (те, что не обрабатывались вручную) обзавелись одинаковолевонижнеугольной подписью.
     Однако же время идет, жизнь ставит передо мною новые задачи, шило в заднице раскалилось до красна прошел месяц и мне захотелось "переписать" все три ноги фотофранкенштейна под ImageMagick. Задумано – сделано. Всего за каких-то 6 часов я смог перекрутить свои извилины в *nix-style и записать вызовы утилит из этого пакета в нужном для FAR виде (этот консольный файловый менеджер, который так сильно и так ошибочно похож издалека на старые добрые "синие таблицы", является наиболее близкой к голове частью фотофранкенштейна) ресайз, шарп, рамочку, подпись. Теперь все работает так же долго, как и раньше, но уже без моего вмешательства в процесс.
convert foto-in.jpg[1000x1000] -shave 5x5 -colorspace Gray -threshold -1 +matte -bordercolor #000000 -border 5 -gaussian-blur 0x4 png:- | convert ( foto-in.jpg -adaptive-resize 1000x1000 -unsharp 0.1x0.5 foto-sign.png -gravity SouthWest -composite ) ( foto-in.jpg[1000x1000] -level 200,255,0.5 ) -mask - -composite -shave 2x2 -bordercolor #888888 -border 1 - | convert - -bordercolor #000000 -border 1 -quality 80 | exiftool - -thumbnailimage= -icc_profile= -copyright="(c) Roman Orlov, http://ornic.livejournal.com" >foto-out.jpg
P.S. Рамочка сопротивлялась дольше всего.
P.P.S. Она получилась все равно немного не такой как в фотошопе. И в результате именно рисование рамочки занимает основное время. Особенно медленно реализовано размытие по Гауссу.
P.P.P.S. Да, саму подпись тоже можно генерировать каждый раз силами ImageMagick, а не брать из файла, но шило уже остыло я решил поберечь свой мозг и глаза.

[identity profile] bod-hi.livejournal.com 2008-01-04 03:41 am (UTC)(link)
Хе-хе, Рома, welcome to the Real World!

[identity profile] ornic.livejournal.com 2008-01-04 04:27 am (UTC)(link)
В Реальном Мире нет лево/право/верх/низ, да? :) Есть только компаc.

[identity profile] truerps.livejournal.com 2008-01-04 04:52 am (UTC)(link)
Писал бы уж сразу скрипт для шопа.

[identity profile] ornic.livejournal.com 2008-01-04 09:47 am (UTC)(link)
Я думал этот вариант. Но шоповский скрипт не засунешь на веб-сервер.

[identity profile] truerps.livejournal.com 2008-01-04 12:20 pm (UTC)(link)
Фотошоп тоже не поставишь. Просто задача тогда сразу выглядит несколько иной.
Ещё есть nconvert.exe из комплекта XnView.

[identity profile] ornic.livejournal.com 2008-01-04 12:57 pm (UTC)(link)
Ну да, задача еще состоит в том, чтобы сделать конвейер переносимым на web.

Так что я еще и exiftool прикрутил. ;) Правда в реалиях нашего хостинга, боюсь, придется переделывать его часть на PHP.

[identity profile] chatra.livejournal.com 2008-01-05 03:00 pm (UTC)(link)
Хотела тебе линк подсунуть на готовый скрипт, а тебе не надо оказывается :)

[identity profile] ornic.livejournal.com 2008-01-05 03:25 pm (UTC)(link)
Клева. Спасибо. :) Жалко там Smart Sharpen не предусмотрен. Он разительно отличается по результату от всяких sharp и unsharp. И запуск внешних action тоже бы не помешал...

А камменты, камменты! :D

[identity profile] chatra.livejournal.com 2008-01-05 03:31 pm (UTC)(link)
ну если уж ты осилил создание своего скрипта уж этот то сможешь поправить, думаю :)

[identity profile] truerps.livejournal.com 2008-01-04 12:26 pm (UTC)(link)
Я в Москве, кстати. Предмет со мной.

[identity profile] ornic.livejournal.com 2008-01-04 12:57 pm (UTC)(link)
Супер! :) У Насти есть мой телефон - придумывайте где и когда, и я приеду.

[identity profile] tinriuin.livejournal.com 2008-01-09 12:34 pm (UTC)(link)
А результат покажать? :)
У меня полностью автоматизировать не получается к сожалению :) Потому как исходники разных размеров получаются, в результате чего их шарпить надо либо 1 раз либо 2.

[identity profile] ornic.livejournal.com 2008-01-09 02:33 pm (UTC)(link)
Шарпинг в ImageMagick не очень хороший. Так что те фотки, что я обрабатываю в фотошопе я не ленюсь уменьшить и пошарпить руками. А показываю я обычно то, что обрабатываю. ;)

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

А вообще тут в комментариях неплохой фотошопный скрипт chatra посоветовала. Там шарпинг хороший, не такой сильный как я делаю, но зато и артефактов меньше.