Изучение объектной модели Photoshop при помощи приложения Adobe ExtendScript Toolkit CC.
Открываем программу, выбираем приложение, с которым будем работать, в нашем примере это Adobe Photoshop CC2019:
Photoshop должен быть запущен и в нем нужно создать или открыть любой поддерживаемый файл.
В среде Extendscript Toolkitможно запускать скрипты, отслеживать ошибки, делать отладку, вывод значений переменных и т.п., но мы рассмотрим режим Data Browser, найти его можно в меню – Window – Data Browser:
Откроется окно с многочисленными свойствами данных, методов и функций Photoshop.
Типы данных, которые мы сможем изучать:
Начинаем изучение с объекта Приложение – app
Для нас в первую очередь интересует ветка app=[Application Adobe Photoshop] – открываем объект приложение Photoshop:
С этой ветки можно изучать свойства программы Photoshop.
Выберем переменную activeDocument = [Document Изучение Toolkit.psd] – в Photoshop открыт и активен документ с таким именем – “Изучение Toolkit.psd”. Чтобы воспользоваться в скрипте такой информацией, к примеру присвоить переменной это значение нужно написать скрипт:
var s=app. activeDocument
alert(s)
При выполнении будет выведено значение объекта Document Изучение Toolkit.psd
Получим сведения о программе Photoshop:
Выберем переменную build
var s=app. build
alert(s)
Скрипт выведет полную информацию о версии сборки программы Photoshop
Выберем метод openDialog()
Набираем скрипт app.openDialog() – запускаем на выполнение и откроется диалоговое окно выбора файла выбрав любой файл и нажав открыть в программе Photoshop ничего не откроется, этот метод нужен для работы с файлами – например напишем скрипт:
var f= app.openDialog()
alert(f)
Теперь после выбора файла мы получили переменную f содержащую объект-файл или список файлов, т.к. методом openDialog() можно выбрать несколько файлов.
Метод open()
var f=app.openDialog()
app.open(new File( f ))
этим скриптом загружаем выбранный в диалоге файл в Photoshop? Если были выбраны несколько файлов, то их переменные будут указываться следующим образом f[0], f[1], f[2] …
Метод doAction() – запуск операций (Action):
app.doAction("Имя операции","Имя набора операций") этот скрипт запустит экшн, записанный вами.
И так далее изучайте возможные методы, доступные переменные для считывания.
Как понять что писать в аргументах метода – читать документацию по Extendscript- https://www.adobe.com/devnet/photoshop/scripting.html
Также есть справка по основным функциям в самой программе Extendscript Toolkit CC – меню help – Object Model Viewer:
В строке под Browser выбираем Adobe Photoshop XX Object Library, в строке поиска вводим интересующую нас функцию, например doAction (следите за регистром это важно) –
Получаем справку по данной функции, видим, что она имеет 2 аргумента имя операции и имя набора операций, обе переменных строковые, значит их значения надо писать в кавычках.
Вернемся к Data Browser, откроем объект app, в нем откроем объект activeDocument
В прошлый раз в скрипте мы писали
var s=app. activeDocument
alert(s)
И результат был объект, теперь если зайти в объект activeDocument, то можно найти переменную name? Теперь можно получить имя файла:
var s=app. activeDocument.name
alert(s)
Можно изучить текущий слой
Объект activeLayer
var L=app.activeDocument.activeLayer.name
alert(L)
Результат имя текущего слоя:
Погружаемся дальше открываем объект app.activeDocument.activeLayer
Видим множество методов, которые можно применять к слою, например размытие по Гауссу
Метод applyGaussianBlur()
app.activeDocument.activeLayer.applyGaussianBlur(10) – размытие по Гауссу текущего слоя с радиусом 10px.
Объект bounds содержит координаты верхнего левого и нижнего правого угла выбранного слоя с учетом примененных к слою стилей
var b= app.activeDocument.activeLayer.bounds
alert("координата Х верхего левого угла"+b[0] )
alert("координата Y верхего левого угла"+b[1] )
alert("координата Х нижнего правого угла"+b[2] )
alert("координата Y нижнего правого угла"+b[3] )
При присвоении переменной b значение объекта bounds, переменная получает 4 числа в виде массива.
Объект boundsNoEffect содержит координаты верхнего левого и нижнего правого угла выбранного слоя без учета примененных к слою стилей.
Переменная grouped – булевая переменная, определяющая входит ли слой в группу