Писать скрипты для Фотошопа, зачастую, нудно и больно (привет многочисленным багам и индийским разработчикам). Но бывает увлекательно и полезно. А если вы знакомы с JavaScript, то и достаточно легко.
Подготовка
Вам понадобится программа Adobe ExtendScript Toolkit. ваш Фотошоп и немного усердия.
После установки запускаем ExtendScript Toolkit и в левом-верхнем углу меняем “ExtendScript Toolkit CC” из выпадающего меню на Фотошоп. Делаем это для того, что бы по нажатию зелёной стрелочки наш скрипт запускался в Фотошопе.
Мы готовы. Весь код, который будет идти дальше, можно писать и выполнять в свежеустановленном ExtendScript Toolkit, а по-окончанию сего действа — сохранить в файл. jsx и пользоваться в своё удовольствие.
Не будем вникать в объектную модель Фотошопа и прочие сложные термины, про которые вы сможете прочитать в официальной документации (даже с картинками). Ссылки есть в конце поста.
В бой.
Работа с активным слоем
Чаще всего мы хотим что-либо сделать с активным слоем. Для этого необходимо обратиться к Фотошопу (app ), затем к активному документу (activeDocument ) и, наконец, к нашему слою (activeLayer ).
У слоя есть свойства и методы (выполняемые действия), как и у остальных объектов (документов, каналов, текста, векторных шейпов, …).
Например, что бы узнать имя слоя — нужно обратиться к свойству name .
А что бы переименовать слой:
Скрыть или показать слой — свойство visible .
Подвигать содержимое слоя по холсту — метод translate .
А так же можно узнавать границы содержимого (bounds ), изменять прозрачность слоя (opacity ) и заливки (fillOpacity ), дублировать (duplicate ), масштабировать (resize ) и так далее.
Полный перечень свойств и методов для всех доступных объектов можно узнать в официальной документации, ссылку на которую я прикрепил в конце поста.
Усложняем задачу
Допустим, у нас есть документ с текстовым слоем (в нём что-то написано).
Что бы сходу окунуться с головой в скриптинг, напишем код, который будет узнавать шрифт, размер, интерлиньяж и цвет написанного текста и вставлять их в имя слоя. Какому-нибудь верстальщику будет приятно.
После выполнения такого скрипта имя нашего слоя превратится в нечто подобное:
ArialMT, 14 pt, #000000
Или ничего не произойдёт, так как мы можем встретиться с нашим первым багом Фотошопа. ☺
Дело в том, что если создать новый текстовый слой и не изменять ему цвет, а оставить дефолтный чёрный (#000000), то по какой-то причине Фотошоп не может получить это значение. Подобный баг далеко не единственный, но, зачастую, они побеждаются довольно легко — при помощи javascript-конструкции “try…catch”. Данная синтаксическая конструкция пытается выполнить кусок кода прописанный в try. а если возникает ошибка — выполняет кусок кода из catch .
Подробнее про try…catch на сайте javascript. ru .
Итак, фиксим возможную ошибку с определением цвета:
Получаем следующее:
Теперь наш код точно сработает.