Создание
Plugin's для Фотошопа
Феномен невероятной популярности
графического
редактора фирмы Adobe на просторах бывшего СССР еще
предстоит
исследовать психологам, социологам, лингвистам и другим
представителям
неточных наук. Являясь непревзойденным инструментом для
профессиональной
работы с растровыми изображениями, Photoshop сумел
покорить миллионы
винчестеров самой любознательной страны мира. Его можно
обнаружить
на специализированных графических станциях, офисных
компьютерах,
в ноутбуках менеджеров, домашних игровых "компах", а
также на каждом четвертом сборнике пиратских программ.
По-видимому,
не последнюю роль в столь широком признании играет
наличие большего
количества так называемых плагинов, многократно
усиливающих развлекательную
составляющую творчества.
Очевидно, что некоторые дополнительные
инструменты
для работы с изображениями занимают достойные места в
арсенале
специалистов, и всё же, их основными потребителями
являются как
раз люди, чья профессия не имеет прямого отношения к
работе с
компьютерной графикой. Абсолютное большинство так
называемых "плагиноманов"
- это люди, коротающие вечера за оформлением семейных
фотоальбомов
и дизайном домашних страничек. Не секрет, что настоящие
профессионалы
предпочитают пользоваться в работе исключительно базовым
набором
фильтров и добиваться нужных эффектов при помощи
комбинирования
классических приемов редактирования. Для людей
зарабатывающих
не последнее значение имеет также степень легитимности
используемых
инструментов, а цена иных плагинов сравнима с ценой
самого Photoshop.
Тем не менее, в последних версиях своего графического
редактора
фирма Adobe продолжает тенденцию на облегчение жизни
именно неискушенного
пользователя, чем периодически вызывает раздражение
консервативно
настроенной части профессионального сообщества.
Adobe Photoshop поддерживает не только
встроенные
фильтры, но и фильтры других производителей. Для этого
их надо
установить, и они будут появляться в меню вместе со
встроенными
фильтрами.
~*
Photoshop
для "Чайников" *~ |
Возможность подключения дополнительных
внешних
модулей явилась одной из наиболее продуктивных затей в
истории
прикладного программирования. Мощность базового
приложения (хоста)
наращивается за счет работы десятков, а то и сотен
сторонних программистов,
которые чаще всего тоже в накладе не остаются.
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 долларов можно заказать готовый фильтр,
основанный
на придуманном вами алгоритме.
Незарегистрированная версия имеет пакостное ограничение
на размер
обрабатываемого изображения, работает в течение 30 дней,
а потом
начинает вымогать деньги.
К сожалению, рекомендовать эту программу кому бы то ни
было довольно
сложно. Имея явные преимущества перед бесплатной Filter
Factory,
Filter Formula уступает по функциональности более
совершенным
продуктам, к тому же превосходя их по цене.
Filter
Meister - новый
суперамбициозный
проект, находящийся к моменту написания этой статьи в
стадии бета-тестирования.
Незарегистрированная версия не позволяет сделать
автономный фильтр,
но других ограничений не имеет. Декларируется обратная
совместимость
с Filter Factory. При дизайне интерфейсов есть
возможность подстилать
собственные обои и использовать управляющие элементы из
API Windows
(линейки прогрессии, лист-боксы, кнопки и т.п.).
Встроенный компилятор обеспечивает
вызовы некоторых
функций из стандартных
библиотек C (<stdio>, <math> и пр.), ряд
обращений
к Win32API и поддерживает типы данных с плавающей
точкой! Это
означает, что теперь есть возможность использовать
алгоритмы билинейной
фильтрации (при масштабировании и деформациях) и
краевого антиалайзинга.
Обработка изображения может осуществляться как целиком,
так и
по частям, снижая, таким образом, не слишком актуальные в
настоящее
время требования к объёму оперативной памяти и повышая
производительность
при работе на многопроцессорных платформах. Структурные
типы данных,
массивы и указатели не поддерживаются. Заявлена
возможность работы
в цветовых модах CMYK и Lab, хотя лично мне такие
фильтры не попадались.
Запланированный к выпуску вариант Professional
будет обладать кучей профессиональных качеств, как то:
наличие
визуального конструктора интерфейсов, возможность
ставить свои
копирайты, прилинковывать собственные библиотеки и
шифровать код
стойким алгоритмом для зашиты от последующего
восстановления!
:-)
Из недоработок свойственных версиям бета, следует
упомянуть некоторые
проблемы с утечками памяти, которые могут нарушать
нормальную
работу Photoshop и лечатся его перезагрузкой. Хотелось
бы также
поворчать по поводу размерчика скомпонованного фильтра
(от ста
килобайт плюс размер прожорливой bmp'шки с обоями) и
неудобной
работы с ползунками на вычислительноёмких алгоритмах.
Рекомендовать Filter Meister можно
людям, обладающим
некоторым опытом в программировании на C. Качество
документации
выше всяких похвал. Даже если вы остановите свой выбор
на другом
генераторе фильтров, обязательно ознакомьтесь с
прилагаемым учебником
по теории обработки изображений.
Сравнительные характеристики программ-генераторов
фильтров (Filter
Compilers).
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 http://partners.adobe.com/asn/developer/gapsdk/PhotoshopSDK.html
(~7Mb).
Работу с оригинальной документацией, да ещё на чужом
языке редко
удается назвать простой, но случай с Adobe SDK
отличается особой
запущенностью. Несмотря на то, что прилагаемые примеры
компилируются
с первого раза и без ошибок, попытки разобраться в их
работе оборачиваются
головной болью даже для опытного программиста.
Во-первых, исходный
код - двухплатформенный (Mac OS и Win32). Во-вторых -
написан
на простом C, без намёков на объектно-ориентированную
модель.
В-третьих, наблюдается явная болезнь развития, то есть
за девять
лет код ни разу не переписывался заново, а только
обрастал добавлениями,
переопределениями, вложенными конструкциями и прочим
хламом. В-четвертых,
используется неоправданно большое количество обращений к
плоходокументированным
функциям Adobe Photoshop API, не самым удачным образом
дублирующим
стандартные вызовы Win32 API. В результате адобовский
SDK заслуженно
пользуется скверной репутацией среди программистов всех
уровней.
Но, как часто бывает, не всё так
грустно
как кажется. Исходный текст некоего тривиального
фильтра, который
можно скачать с http://redfield.webzone.ru/fish.zip,
содержит не более ста строчек кода и компилируется в
файл proba.8bf
размером 4.5k . Пример даёт
представление о том,
как происходит взаимодействие плагина с Photoshop'ом, и,
что более
важно, демонстрирует несложность этого механизма.
Дальнейшая модернизация
кода может проводиться с минимальными обращениями к
оригинальной
документации с использованием привычных библиотек и
наработанных
приёмов программирования.
Наш первый фильтр не имеет превьюшки и настроек, не
отличается
утонченностью
интерфейса и выполняет всего одну операцию, но вы
получаете возможность
пользоваться профессиональным средством разработки
программ со
всеми вытекающими вытеканиями в виде производительности,
компактности,
гибкости, отсутствия необходимости приобретать
дополнительный
софт и изучать суррогатные языки программирования.
Авторам, собравшимся распространять свои фильтры через
Интернет,
необходимо учитывать, что большинство их потенциальных
потребителей
знакомы с Photoshop только заочно. И наших
соотечественников среди
них совсем не много из-за невысокой доли российского
Интернета
в Интернете нероссийском, и привычек искать программное
обеспечение
не в Сети, а сами понимаете где.
В среднем (повторюсь, в среднем) квалификация
зарубежного пользователя
несколько ниже нашего отечественного, и для работы с
профессиональным
графическим пакетом её не всегда достаточно. Почётного
упоминания
заслуживает и традиция отдавать за программы свои
кровные (PS
5.5, кстати, стоит 630 условных единиц). Заинтересовать
же их
профессионала пользоваться вашим фильтром дело не
простое, поскольку
конкурировать придётся с высокобюджетными коммерческими
продуктами,
заплатить за которые ему вполне по зарплате. К тому же
настоящие
профи, как уже отмечалось, часто работают одними
"руками"
и разными там самопальными плагинами брезгают.
Среди графических редакторов по количеству пользователей
с большим
отрывом лидирует Paint Shop Pro от
фирмы Jasc.
Относительно недорогой, достаточно мощный и обладающий
массой
привлекательных качеств. В нашей стране особой
известности не
получил в связи с отсутствием нормально сделанных
русскоязычных
версий и всеобщим признанием продуктовAdobe. Существует
еще пяток
приложений, на совместимость с которыми плагин
желательно протестировать,
если не преследуется цель заполнять свой почтовый ящик
воплями
огорченных людей. Не стоит расстраиваться из-за
отсутствия версии
вашего фильтра для "Макинтошей", которых, как бы ни
надрывалась Apple, всё-таки очень мало, даже меньше, чем
кажется.
В переписке, однако, следует соблюдать аккуратность, так
как поклонники
этой платформы очень ранимые люди.
Любопытно, что заметное количество "дизайнеров"
составляют
общительные дамы почтенного возраста, проживающие
где-нибудь в
англоязычном захолустье.Если получите письмо от
какой-нибудь Дианы
из Парамамонт-Бич, учтите, что, скорее всего, ей под
шестьдесят
и она регулярно обновляет фотографии внуков на своей
домашней
страничке. Тем не менее, рисуют старушки порой весьма
достойно,
и зарегистрировать шароварку для них дело вполне
обычное, поскольку
про "Асталависту" не слышали, и с деньгами на карточках
,в нашем понимании, полный порядок. Так что начинайте с
какого-нибудь
синтезатора кружевных тряпочек или компилятора кремовых
розочек:
Билгейцом не станете, но успех гарантирован конкретный.
Автор:
Краснопольский
Евгений