Плагин к Photoshop, и как его сделать
АрхивФеномен невероятной популярности Photoshop на просторах бывшего СССР еще предстоит исследовать психологам, социологам, лингвистам и другим представителям неточных наук. Он сумел покорить миллионы винчестеров самой любознательной страны мира.
What a serpent fussing in the window,
Keeping a plugin behind his back…
Вон он, змей, в окне маячит,
За спиною штепсель прячет…
В. Высоцкий
Adobe Photoshop поддерживает не только встроенные фильтры, но и фильтры других производителей. Для этого их надо установить, и они будут появляться в меню вместе со встроенными фильтрами.
Photoshop для «чайников»
Феномен невероятной популярности графического редактора фирмы Adobe на просторах бывшего СССР еще предстоит исследовать психологам, социологам, лингвистам и другим представителям неточных наук. Являясь непревзойденным инструментом для профессиональной работы с растровыми изображениями, Photoshop сумел покорить миллионы винчестеров самой любознательной страны мира. Его можно обнаружить на специализированных графических станциях, офисных компьютерах, в ноутбуках менеджеров, домашних игровых компах, а также на каждом четвертом сборнике пиратских программ. По-видимому, не последнюю роль в столь широком признании играет большое количество подключаемых модулей (так называемых плагинов, от англ. plug-in), многократно усиливающих развлекательную составляющую творчества.
Очевидно, что некоторые дополнительные инструменты для работы с изображениями занимают достойное место в арсенале специалистов, и все же их основными потребителями являются те, чья профессия не имеет прямого отношения к работе с компьютерной графикой. Абсолютное большинство «плагиноманов» — это люди, коротающие вечера за оформлением семейных фотоальбомов и дизайном домашних страничек. Не секрет, что профессионалы предпочитают пользоваться исключительно базовым набором фильтров и добиваться нужных эффектов при помощи комбинирования классических приемов редактирования. Для людей зарабатывающих не последнее значение имеет также степень легитимности используемых инструментов, а цена иных плагинов сравнима с ценой самого Photoshop. Тем не менее, в последних версиях своего графического редактора фирма Adobe продолжает тенденцию облегчения жизни именно неискушенного пользователя, чем вызывает раздражение консервативной части профессионального сообщества.
Возможность подключения дополнительных внешних модулей явилась одной из самых продуктивных затей в истории прикладного программирования. Мощность базового приложения (хоста) наращивается за счет десятков, а то и сотен сторонних программистов, которые чаще всего тоже в накладе не остаются.
Photoshop — явный фаворит у желающих «поштепселить». Число написанных для него фильтров, по разным оценкам, перевалило то ли за две, то ли за четыре тысячи. Не все плагины суть фильтры. Существуют также экспортно-импортные модули, модули автоматизации, форматирования и пр. Но именно фильтры являются самым распространенным и, безусловно, самым интересным типом. Если вы никогда не программировали либо ограничивались исключительно Бейсиком, не расстраивайтесь, упомянутое изобилие создано как раз вашими коллегами. Существующие на сегодняшний день программы-генераторы позволяют писать достаточные для многих случаев фильтры на основе несложного языка, освоить который можно за пару дней.
Выпущенный Adobe Systems в 1994 году, Filter Factory (далее FF) — первый и самый известный генератор фильтров. Именно этой бесплатной программе мы обязаны появлением несметного количества «штепселей» с похожими, как близнецы, интерфейсами в стиле незабвенной Windows 3.1. Характерные признаки фильтров, приготовленных с помощью FF, — неочевидная логика работы и сомнительное качество обработанного изображения. Причиной тому являются жесткие ограничения на размер исходного кода, убогий конструктор интерфейса и невозможность оперировать данными с плавающей точкой.
Тем не менее, при несложной работе с цветом, редактировании прозрачности, наложении простых текстур, теней и других нехитрых штуковин FF показывает вполне приемлемые результаты. Попытки построения более замысловатых эффектов, связанных с деформациями, фигурными фасками и т. п., приводят к появлению ступенчатых границ, выпаданий, артефактов и прочих «друзей» целочисленной арифметики. Однако среди унылого однообразия попадаются настоящие произведения искусства, способные украсить любую коллекцию фильтров.
Сама FF реализована также в виде плагина и вместе с образцами готовых фильтров и документацией занимает менее четырехсот килобайт. Существует в версиях для Windows и Mac, а также в модификации для Adobe Premiere. Построенный с ее помощью фильтр имеет фиксированный размер и включает в себя исходный программный код, который компилируется непосредственно перед выполнением. Как и в случае с другими программными продуктами от технологии open source, мы неизбежно получаем большое количество похожих и постоянно мутирующих реализаций одних и тех же алгоритмов, к тому же бесплатных. Фильтры от FF имеют высокую степень идентичности на уровне двоичного кода, что способствует их распространению через Интернет. В один «сплошной» архив (например RAR) размером 60K таких фильтров влезает штук сто.
Встроенный язык FF напоминает усеченный C. Операторы цикла отсутствуют. Из математики доступны квадратный корень, тригонометрические функции, конвертация из RGB в YUV, а также относительно «навороченный» вычислитель свертки массива из девяти пикселов. Кроме того, есть простенький генератор случайных чисел и набор функций для работы в полярных координатах. В Сети можно отыскать всевозможные «разъяснялки» с примерами и комментариями. Правда, все на английском.
К сожалению, FF сильно обветшала. Для программного продукта пять лет без обновлений — срок предельный. Хотя если идея написать фильтр посетила вас впервые, и секрета из его алгоритма вы делать не собираетесь, Filter Factory до сих пор остается неплохим выбором.
Здесь стоит упомянуть о вспомогательных утилитах, облегчающих складирование и управление большим набором фильтров. Поскольку реализация универсального алгоритма обработки изображения при использовании FF представляет немалую проблему из-за катастрофической нехватки ресурсов, большинство авторов идет по пути создания не одного, а нескольких узкоспециализированных фильтров, число коих в одной группе эффектов может достигать нескольких десятков. Увлеченному пользователю такое изобилие неизбежно затрудняет работу.
Программы-менеджеры позволяют хранить тысячи FF-фильтров в одном архивном файле, разбивать их по разделам, осуществлять поиск, снабжать комментариями, редактировать исходный код. Существуют также функции предпросмотра. Самые известные из них Plugin Commander от фирмы PiCo и Plugin Manager от I.C.NET Software. Бесплатные версии этих программ работают только с фильтрами от Filter Factory, шароварные же способны управляться с коммерческими плагинами (и не только с фильтрами).
Filters Unlimited фирмы I.C.NET Software — самый удачный менеджер фильтров FF. Он реализован в виде метаплагина, то есть в меню «Filter» появляется только одна строчка, которая и является ссылкой на всю коллекцию. Поставляется со ста пятьюдесятью готовыми фильтрами, имеет удобную функцию предпросмотра, создаваемые пресеты элегантно маркируются небольшими скриншотами. Поддерживает собственные расширения языка Filter Factory, среди которых — функции коррекции гаммы, текстурирования, работы с градиентными заливками, усовершенствованные вычислитель свертки и генератор случайных чисел. Увеличен размер доступной программисту оперативной памяти. Из недостатков следует отметить немасштабируемую превьюшку и довольно высокую цену — 35 долларов. Хотя сопроводительная документация подробностью не отличается, эту программу можно с успехом использовать в целях обучения, измываясь над исходниками полутора сотен прилагаемых фильтров.
Filter Formula от компании ATS — совместимый с FF по исходному коду генератор плагинов с расширенными возможностями. Выпускается в двух вариантах: Small Edition и Professional. Облегченная версия не позволяет сделать автономный фильтр (файл с расширением 8bf) и работает только с исходным текстом. Программа производит приятное впечатление. Максимальная длина кода вчетверо выше, чем у FF, функциональные возможности несравненно шире, в том числе по дизайну интерфейса. Профессиональная версия способна компоновать в один файл сразу несколько фильтров. Поиски в Интернете декомпилятора для созданных Filter Formula Professional плагинов успехом не увенчались, что создает условия для их распространения на коммерческой основе.
Следует упомянуть о дополнительном сервисе, предлагаемом на сайте ATS: за 50 долларов можно заказать готовый фильтр, основанный на придуманном вами алгоритме.
Незарегистрированная версия имеет пакостное ограничение на размер обрабатываемого изображения, работает в течение тридцати дней, а потом начинает вымогать деньги.
К сожалению, рекомендовать эту программу кому бы то ни было довольно сложно. Имея явные преимущества перед бесплатной Filter Factory, Filter Formula уступает по функциональности более совершенным продуктам, к тому же превосходя их по цене.
Filter Meister — новый суперамбициозный проект, находящийся к моменту написания статьи в стадии бета-тестирования. Незарегистрированная версия не позволяет сделать автономный фильтр, но других ограничений не имеет.
Декларируется обратная совместимость с Filter Factory. При дизайне интерфейсов можно подстилать собственные обои и использовать управляющие элементы из API Windows (линейки прогрессии, лист-боксы, кнопки и т. п.). Встроенный компилятор обеспечивает вызов некоторых функций из стандартных библиотек C (<stdio>, <math> и пр.), ряд обращений к Win32API и поддерживает типы данных с плавающей точкой! Это означает, что теперь есть возможность использовать алгоритмы билинейной фильтрации (при масштабировании и деформациях) и краевого антиалайзинга. Обработка изображения может осуществляться как целиком, так и по частям, снижая, таким образом, не слишком актуальные в настоящее время требования к объему оперативной памяти. Структурные типы данных, массивы и указатели не поддерживаются. Заявлена возможность работы в цветовых модах CMYK и Lab, хотя мне такие фильтры не попадались.
Запланированный к выпуску вариант Professional будет обладать кучей профессиональных качеств, как то: наличие визуального конструктора интерфейсов, возможность ставить свои копирайты, прилинковывать собственные библиотеки и шифровать код стойким алгоритмом для защиты от последующего восстановления!
Из недоработок, свойственных версиям бета, следует упомянуть проблемы с утечкой памяти, которые могут нарушать нормальную работу Photoshop и лечатся его перезагрузкой. Хотелось бы также поворчать по поводу размера скомпонованного фильтра (от ста килобайт плюс размер прожорливой bmp‘шки с обоями) и неудобной работы с ползунками на вычислительно емких алгоритмах.
Рекомендовать Filter Meister можно людям, обладающим некоторым опытом программирования на C. Качество документации выше всяких похвал. Даже если вы остановите свой выбор на другом генераторе фильтров, обязательно ознакомьтесь с прилагаемым учебником по теории обработки изображений.
Photoshop поддерживает девять типов подключаемых модулей.
- Import modules (модули импорта изображений). Файлы с расширением 8ba. Используются для связи со сканерами, устройствами захвата кадров, ввода изображений в неподдерживаемых файловых форматах. Доступны из подменю «Import».
- Export modules (модули экспорта). Файлы с расширением 8be. Используются для сохранения изображения в неподдерживаемых файловых форматах, а также для вывода на нестандартные внешние устройства. Доступны из подменю «Export».
- Format modules (преобразование формата изображения). Файлы с расширением 8bi. Похожи на экспортно-импортные модули и используются для работы с нестандартными файловыми форматами. Доступны из подменю «Open» и «Save As».
- Filter modules (модули фильтров). Файлы с расширением 8bf. Обрабатывают существующее изображение или его часть. Доступны из меню «Filter». Большинство пользователей знакомо исключительно с этим типом плагинов.
- Parser modules. Файлы с расширением 8by. То же, что и модули преобразования, только предназначенные для работы с векторными форматами данных (Adobe Illustrator, PageMaker и др.). Спецификации плагинов этого типа закрыты для публичного доступа.
- Automation modules (модули автоматизации). Файлы с расширением 8li. Дают доступ к сценариям Adobe Photoshop. Доступны из подменю «Automate» или «Help».
- Extension modules (модули расширения). Файлы с расширением 8bx. Применяются для встраивания дополнительных функций в интерфейс Adobe Photoshop, а также для инициализации некоторых внешних устройств. Своего интерфейса, как правило, не имеют. Спецификации плагинов этого типа закрыты для публичного доступа.
- Selection modules (модули выделения). Файлы с расширением 8bs. Доступны из меню «Selection». Применяются для выделения части растрового изображения (selection) или для работы с векторными данными (paths).
- Color Picker modules. Файлы с расширением 8bc. Позволяют подключить альтернативный «color picker» вдобавок к двум существующим: от Photoshop и от Windows. Исходный текст такого модуля включен в Adobe Photoshop SDK в качестве одного из примеров.
Фильтр Adobe Photoshop представляет собой файл с расширением 8bf, который на поверку оказывается обычной dll. При запуске Photoshop просматривает директорию с плагинами на предмет наличия 8bf-файлов и помещает их имена в меню «Filter». Специфическая информация о плагине (категория, имя, поддерживаемые режимы [RGB, CMYK и пр.], номер версии) находится в специальном двоичном ресурсе с гордым названием «PIPL» (Plug-In Property List). Именно наличие этого «пипла» и отличает собственно фильтры от других dll. Если эксперимента ради сменить какому-либо файлу расширение с 8bf на dll, появится возможность рассмотреть его в одном из редакторов ресурсов Windows (доработать интерфейс, русифицировать, поменять копирайты, вставить троян и т. п.). Автор, ясное дело, ни к чему подобному не призывает, но натравить антивирус на скачанный из Сети фильтр не помешает, поскольку в 8bf-файлах всякая дрянь может гнездиться с не меньшим комфортом, чем в exe‘шках.
Если вы в детстве интересовались языком С++ и программировали для Windows 95, то можете попробовать написать настоящий фильтр с любимым интерфейсом и ничем не ограниченными (воображение не в счет) возможностями. Вам понадобится Microsoft Visual C++ 5 или более новая версия, а также комплект разработчика Adobe Photoshop SDK (partners.adobe.com/asn/developer/gapsdk/PhotoshopSDK.html; 7 Мбайт).
Работу с оригинальной документацией, да еще на чужом языке редко удается назвать простой, но случай с Adobe SDK отличается особой запущенностью. Несмотря на то, что прилагаемые примеры компилируются с первого раза и без ошибок, попытки разобраться в их работе оборачиваются головной болью даже для опытного программиста. Во-первых, исходный код — двухплатформный (Mac OS и Win32). Во-вторых — написан на простом C, без намеков на объектно-ориентированную модель. В-третьих, наблюдается явная болезнь развития, то есть за девять лет код ни разу не переписывался заново, а только обрастал добавлениями, переопределениями, вложенными конструкциями и прочим хламом. В-четвертых, используется неоправданно большое количество обращений к плохо документированным функциям Adobe Photoshop API, не самым удачным образом дублирующим стандартные вызовы Win32 API. В результате Adobe SDK заслуженно пользуется скверной репутацией среди программистов всех уровней.
Но, как часто бывает, не все так грустно, как кажется. Исходный текст некоего тривиального фильтра, который можно скачать с redfield.webzone.ru/fish.zip, содержит не более ста строчек кода и компилируется в файл proba.8bf размером 4,5 Кбайт. Пример дает представление о том, как плагин взаимодействует с Photoshop, и, что более важно, демонстрирует несложность этого механизма. Дальнейшая модернизация кода может проводиться с минимальными обращениями к оригинальной документации и использованием привычных библиотек и наработанных приемов программирования.
Наш первый фильтр не имеет превьюшки и настроек, не отличается утонченностью интерфейса и выполняет всего одну операцию, но вы получаете возможность пользоваться профессиональным средством разработки программ со всеми вытекающими вытеканиями в виде производительности, компактности, гибкости, отсутствия необходимости приобретать дополнительный софт и изучать суррогатные языки программирования.
Авторам, собравшимся распространять свои фильтры через Интернет, необходимо учитывать, что большинство потенциальных потребителей знакомы с Photoshop только заочно, и наших соотечественников среди них совсем немного.
В среднем (повторюсь, в среднем) квалификация зарубежного пользователя ниже нашего отечественного, и для работы с профессиональным графическим пакетом ее не всегда достаточно. Упоминания заслуживает и традиция отдавать за программы свои кровные (PS 5.5, кстати, стоит 630 условных единиц). Заинтересовать же их профессионала вашим фильтром — дело не простое, поскольку конкурировать придется с высокобюджетными коммерческими продуктами, заплатить за которые буржуинскому программисту вполне по карману. К тому же настоящие профи, как уже отмечалось, часто работают одними «руками» и разными там самопальными плагинами брезгуют.
Среди графических редакторов по количеству пользователей с большим отрывом лидирует Paint Shop Pro от фирмы Jasc. Недорогой, достаточно мощный и обладающий массой привлекательных качеств. В нашей стране особой известности не получил из-за отсутствия русскоязычных версий и всеобщего признания продуктов Adobe. Существует еще пяток приложений, на совместимость с которыми плагин желательно протестировать, если не преследуется цель заполнять свой почтовый ящик воплями огорченных людей. Не стоит расстраиваться из-за отсутствия версии вашего фильтра для «Макинтошей», которых, как бы ни надрывалась Apple, все-таки очень мало, даже меньше, чем кажется. В переписке, однако, следует соблюдать аккуратность, так как поклонники этой платформы очень ранимые люди.
Сравнительные характеристики программ-генераторов фильтров (Filter Compilers)
Filter Factory |
Filters Unlimited |
Filter Formula |
Filter Meister | |
Производитель |
Adobe Systems |
I.C.NET Software |
ATS Vienna |
AFH Systems Group |
Максимальная длина исходного кода, Кбайт |
4 |
нет данных |
16 |
16 |
Поддерживаемы типы данных |
целый |
целый |
целый |
целый, с плавающей точкой, литеральный |
Расширения языка |
Нет |
оператор case, гамма, текстуры, градиенты, текселы |
условные операторы, операторы цикла, арифметика |
подмножество C |
Элементы интерфейса |
превьюшка, ползунки (немасштабируемые) |
менеджер фильтров, менеджер пресетов, генератор случайных вариаций, селектор градиентов |
масштабируемая превьюшка, ползунки, кнопки, чек-боксы, файлы помощи |
масштабируемая превьюшка, обои, Win32API |
Возможность построения автономного фильтра |
есть |
нет |
только в версии Pro |
есть |
Возможность декомпиляции |
есть |
заблокирован [Apply] |
нет |
нет |
Ограничения бесплатной версии |
35 |
30 дней, максимальный размер изображения |
нельзя скомпоновать автономный фильтр | |
Цена зарегистрированной версии, $ |
бесплатно |
нет |
30/55 Pro |
25 |
Наличие версии для Mac |
есть |
хорошая |
нет |
нет |
Совместимость с популярными редакторами |
хорошая |
хорошая |
средняя |
идеальная |
Документация |
большое количество литературы с рекомендациями по работе, форум, конференции UseNet |
средняя, 150 фильтров с исходными кодами |
хорошая |
отличная, учебник по основам теории |
Выбор для начинающего |
хороший |
идеальный |
средний |
средний |
Профессиональная работа |
плохо |
средне |
средне |
хорошо |
Где взять |
Любопытно, что заметное количество «дизайнеров» составляют общительные дамы почтенного возраста, проживающие где-нибудь в англоязычном захолустье. Если получите письмо от какой-нибудь Дианы из Парамамонт-Бич, учтите, что, скорее всего, ей под шестьдесят и она регулярно обновляет фотографии внуков на своей домашней страничке. Тем не менее, рисуют старушки порой весьма достойно, и зарегистрировать шароварку — дело для них вполне обычное, поскольку про «Асталависту» они не слышали, да и с деньгами у них полный порядок. Так что начинайте с какого-нибудь синтезатора кружевных тряпочек или компилятора кремовых розочек… Билгейтсом не станете, но успех гарантирован.
Ссылки
- perso.club-internet.fr/gpl — самая полная коллекция фильтров к Photoshop с классификацией, описаниями, скриншотами и рейтингами. Отыскать здесь необходимый плагин бывает проще, чем на CD с их сборником. Обидно, что сайт перестал обновляться. Язык английский и французский.
- www.netins.net/showcase/wolf359/adobepc.htm — лучший сайт по тематике, связанной с Photoshop. Язык английский.