Как написать скрипт в фотошопе

Обновлено: 03.07.2024

В части 1 этого состоящего из двух частей руководства по созданию сценариев Photoshop мы рассмотрели некоторые основы использования сценариев, а также множество доступных ресурсов. Во второй части мы с нуля создадим практичный реальный сценарий.

Как упоминалось во Введении в создание сценариев Photoshop, переключение видимости слоя (включение и выключение) является примером условной логики, для которой идеально подходят сценарии. Итак, давайте посмотрим, как бы вы написали такой скрипт с нуля.

В этом проекте мы будем использовать JavaScript, поскольку это единственный кроссплатформенный язык сценариев, поддерживаемый Creative Suite; однако вы можете так же легко написать аналогичный сценарий, используя AppleScript для Mac или VBScript для ПК.

Совет. Хотя вы можете писать сценарии Photoshop с использованием JavaScript, AppleScript или VisualBasic Script, у JavaScript есть два явных преимущества: он не зависит от платформы (т. е. работает как на Mac, так и на ПК), и многие веб-дизайнеры уже знакомы с ним. .

Совет. Так в чем же разница между файлами ".js" и ".jsx"? Принципиально ничего; они оба являются файлами/скриптами JavaScript. Однако, если вы дважды щелкните файл «.js» в Apple Finder или Windows Explorer, он, скорее всего, откроется в вашем браузере (и отобразит диалоговое окно с ошибкой). Но если у вас установлено какое-либо из приложений CS3, файлы «.jsx» будут связаны с ExtendScript Toolkit. (Для получения дополнительной информации о наборе инструментов ExtendScript см. главу 9 Справочного руководства по JavaScript.)

Жаргон JavaScript

Прежде чем мы начнем, необходимо ознакомиться с некоторыми общепринятыми терминами. Все в Photoshop представлено как «объект» (например, ArtLayer, Channel), и каждый объект является частью массива, называемого «коллекцией» (например, ArtLayers, Channels). Иерархия этих объектов и коллекций включает объектную модель документа (DOM).

Объекты имеют связанные "свойства", описывающие их характеристики (например, имя , непрозрачность ); «методы», которые определяют действия, которые вы можете предпринять против них (например, copy() , resize() ); и «события», которые описывают действия, происходящие в ответ на другие действия (например, onClick() , onChange() ).

Другие термины, заслуживающие определения, включают переменные и массивы. Переменные используются для временного хранения и могут представлять объекты или данные, такие как строки (текст), числа, логические значения (истина/ложь) и массивы. Массивы — это переменные, содержащие несколько значений одного типа. Например, массив целых чисел может содержать значения 1, 3, 7, 15 и 23 (все в одной переменной).

Также обратите внимание, что JavaScript чувствителен к регистру, а это означает, что слова с разным регистром считаются разными, даже если они пишутся одинаково (например, "JavaScript" и "Javascript").

Чтобы узнать больше об основах создания сценариев, обратитесь к главе 2 Руководства по созданию сценариев Photoshop.

Совет. Руководства по сценариям и справочное руководство находятся в папке установки «Adobe Photoshop CS3» во вложенной папке «Руководство по сценариям». Документы также доступны в электронном формате (PDF) в Adobe Photoshop Development Center.

Сценарий с нуля

ExtendScript Toolkit

Мы начнем с создания переменной для хранения нашего справочного документа. Самый простой способ выбрать активный документ — использовать свойство activeDocument объекта приложения (Справочник по сценариям JavaScript, стр. 45), поэтому мы назначим его переменной следующим образом:

var docRef = активный документ;

Аналогичным образом мы создадим опорную переменную для активного слоя, используя свойство activeLayer объекта документа (Справочник по сценариям JavaScript, стр. 89):

var layerRef = docRef.activeLayer;

С этого момента мы можем ссылаться на активный документ и активный слой просто как docRef и layerRef соответственно.

Чтобы переключить видимость активного слоя, нам нужно найти соответствующее свойство слоя для объекта artLayer. В данном случае это свойство visible (Справочник по сценариям JavaScript, стр. 54). Поэтому следующая строка будет выглядеть так:

Восклицательный знак выше является нотацией JavaScript для "не". Таким образом, в грубом переводе приведенная выше строка означает: сделать видимость активного слоя равной тому состоянию видимости, в котором он находится в данный момент, или, проще говоря, сделать видимость противоположной его текущему состоянию.

Обратите внимание, что вам потребуется открыть по крайней мере один документ с хотя бы одним не фоновым слоем, иначе вы получите ошибку скрипта (которую мы скоро исправим). Запустите скрипт несколько раз и на разных слоях, чтобы убедиться, что он работает правильно.

Обработка ошибок

Хорошо, теперь пришло время добавить обработку ошибок — код, который будет обрабатывать неправильное использование скрипта.Сначала мы рассмотрим ситуацию, когда документ отсутствует, используя простой условный оператор if (Руководство по созданию сценариев, стр. 40). Общий синтаксис оператора if:

Документы Photoshop хранятся в коллекции документов в виде массива, а в JavaScript количество элементов в массиве определяется его свойством длины (Справочник по сценариям JavaScript, стр. 102). Таким образом, для проверки открытого документа оператор if будет выглядеть следующим образом:

if (documents.length == 0) action1> else action2>;

Обратите внимание на двойной знак равенства, который является оператором равенства (по сравнению с одним знаком равенства, который используется для присвоения значений).

Получите себе бонусные баллы, если поймете, что приведенное выше утверждение могло быть написано так, как если бы (!documents.length) .

Для action1 мы уведомим пользователя об отсутствии открытых документов с помощью оповещения (базовые классы JavaScript: глобальные элементы), которое представляет собой простое диалоговое окно сообщения с кнопкой OK на Это. Кроме того, мы поместим остальную часть нашего скрипта в action2:

Запустите сценарий с (многослойным) документом, открытым в Photoshop, и без него, чтобы проверить результаты.

Наконец, поскольку слой Background сведенного документа нельзя скрыть, нам нужно написать еще один оператор if, вложенный в существующий оператор else, который проверяет документы, содержащие только один фоновый слой. Мы сделаем это, используя свойство isBackground объекта artLayer (Справочник по сценариям JavaScript, стр. 53).

if (docRef.layers.length == 1 && layerRef.isBackgroundLayer == true)

Итак, на этот раз мы тестируем коллекцию слоев для одного слоя и проверяем, является ли он фоновым слоем. Двойной амперсанд — это оператор И, что означает, что должны быть выполнены оба условия; в противном случае сценарий переходит к оператору else.

Окончательные результаты

Вот и все; все готово! Сохраните ваш скрипт в папку Presets/Scripts. Вот как должен выглядеть окончательный сценарий:

Несмотря на то, что на освоение сценариев может уйти много времени, гибкость, которую они обеспечивают, оправдывает затраченное время, особенно если ваш рабочий процесс включает в себя множество повторяющихся задач, которые нельзя автоматизировать с помощью традиционных действий и пакетной обработки.< /p>

Дополнительные ресурсы

Ниже приведены несколько онлайн-ресурсов, где вы можете узнать больше о написании сценариев для Photoshop:

Если вам понравилось это руководство, рассмотрите возможность поддержки этого сайта. Как всегда, я приветствую ваши отзывы и предложения. Кроме того, если у вас есть проект сценария, который вы хотели бы обсудить со мной, свяжитесь со мной и сообщите подробности, и я буду рад предоставить вам бесплатную оценку.

Камиль Хадеев

Краткий обзор ↬ Автоматизация полезна в работе каждого дизайнера. Это экономит драгоценное время на повторяющихся задачах и помогает нам решать определенные проблемы быстрее и проще.

Автоматизация полезна в работе каждого дизайнера. Это экономит драгоценное время на повторяющихся задачах и помогает нам решать определенные проблемы быстрее и проще.

Вы можете автоматизировать свой рабочий процесс в Photoshop с помощью довольно популярных действий, о которых большинство из вас уже знает и использует. Сегодня мы познакомим вас с продвинутой техникой автоматизации: Photoshop Scripts. Все, что вам нужно для этого, — это базовые знания JavaScript, которые уже есть у некоторых из нас, веб-дизайнеров.

Я много лет знаком со сценариями Photoshop, но несколько месяцев назад решил по-настоящему погрузиться в них. Я избегал этого, потому что думал, что это прерогатива умных программистов с математическим складом ума. Я был неправ, и сегодня я покажу, что, хотя это и требует некоторых базовых навыков программирования, в написании сценариев нетрудно разобраться.

Но сначала мы должны ответить на очевидный вопрос.

Познакомьтесь с потрясающими онлайн-семинарами по внешнему интерфейсу и пользовательскому интерфейсу с практическими выводами, сеансами в прямом эфире, видеозаписями и дружескими вопросами и ответами. О дизайн-системах, CSS/JS и UX. С Кэри Фишер, Стефаном Баумгартнером и многими другими.

Зачем нужны скрипты?

Зачем нам учиться писать скрипты, если в Photoshop уже есть неплохие экшены? Ответ — интерактивность. Когда вы используете действие, вы не можете контролировать его поведение в различных ситуациях; это похоже на видеокассету, которая воспроизводится снова и снова без каких-либо изменений.

Сценарий более динамичен; его поведение меняется в зависимости от введенных вами параметров или контекста его применения. Звучит полезно, не так ли?

Требования

Не нужно быть продвинутым программистом, чтобы писать сценарии; Я всего лишь графический дизайнер, как и большинство из вас. Но вы должны хотя бы иметь базовые знания JavaScript и некоторый опыт работы со свойствами и методами, чтобы извлечь максимальную пользу из этой статьи.

Если вы совсем не знакомы с JavaScript, не бойтесь! Есть много мест, где можно изучить основы программирования. Codecademy, например, предлагает довольно интересные интерактивные уроки.

Я работаю в Adobe Photoshop CS5, но все, что мы расскажем, применимо и к более новым версиям; Adobe не вносила серьезных обновлений в свой скриптовый API со времен CS5. Однако я буду ссылаться на последнюю версию документации по сценариям — CS6.

Начало работы

Когда вы записываете действия в Photoshop, вы устанавливаете порядок шагов для достижения определенного результата — это ваш алгоритм. Затем вы нажимаете «Запись» и копируете их в Photoshop один за другим. Скрипты аналогичны, но вместо того, чтобы выполнять эти шаги в Photoshop, вы записываете их в виде строк кода. Большинство действий, которые вы выполняете в Photoshop, имеют собственный сценарий, эквивалентный функции.

Допустим, вы создаете действие, которое масштабирует документ до 150 % от исходного размера. Вы должны пройти следующие шаги:

  1. Откройте изображение → Размер изображения.
  2. Введите 150 % по ширине и высоте.
  3. Нажмите "ОК".

Тот же процесс со скриптом будет выглядеть следующим образом:

  1. Вызовите приложение: app
  2. Нацелить документ: activeDocument
  3. Вызовите функцию для изменения размера изображения: resizeImage(width, height)

И код будет выглядеть так:

Язык

Существует три способа написания сценариев для Photoshop: использование AppleScript на Mac, VBScript на Windows или JavaScript на любой платформе. Я использую третий, потому что он кроссплатформенный и у меня уже есть некоторый опыт работы с ним.

Инструменты

У Adobe есть собственная утилита для написания скриптов, которая называется ExtendedScript Toolkit.

Набор инструментов поставляется с Photoshop и находится в следующей папке:

  • Mac OS X /Applications/Utilities/Adobe Utilities CS6/ExtendScript Toolkit CS6/
  • Windows C:Program FilesAdobeAdobe Utilities — CS6ExtendScript Toolkit CS6 (или Program Files (x86) для 64-разрядных машин)

Пользовательский интерфейс набора инструментов ExtendedScript довольно прост. Чтобы начать писать сценарии, сначала выберите целевое приложение в раскрывающемся меню. Если Photoshop запущен, найдите рядом с раскрывающимся меню значок с зеленой цепочкой:

Теперь вы можете написать что-то вроде этого:

Нажмите cmd + R (или просто нажмите кнопку «Воспроизвести» на панели инструментов), чтобы запустить скрипт. ExtendedScript Toolkit должен переключиться на Photoshop и отобразить окно с предупреждением:

ExtendedScript Toolkit имеет и другие полезные функции для отладки скриптов, но этого достаточно для этой статьи. Вы можете узнать больше о том, как его использовать, перейдя в Справка → Руководство по инструментам JavaScript .

Вы можете использовать любой текстовый редактор для написания сценария; просто сохраните его как файл .jsx. Чтобы запустить его, вам нужно перейти в «Файл» → «Сценарии» → «Обзор» в Photoshop и выбрать его. Или просто откройте файл сценария в Photoshop. Вы также можете добавить строку кода вверху скрипта, чтобы файл всегда открывался в Photoshop:

Сохраните свои сценарии в каталоге Photoshop/Presets/Scripts/ и откройте их, выбрав Файл → Сценарии. Вы также можете настроить горячую клавишу; просто перейдите в «Правка» → «Сочетания клавиш» , перейдите в «Файл» → «Сценарии» → [имя вашего сценария] и установите нужное сочетание клавиш.

ExtendedScript Toolkit может запускать и отлаживать код из интегрированной среды разработки, а также имеет встроенное средство просмотра объектной модели, что очень удобно. Итак, я рекомендую использовать инструментарий для написания ваших скриптов. К сожалению, версия для Mac иногда дает сбой, так что имейте это в виду.

Объектная модель Photoshop

Чтобы упростить написание сценариев, вы должны понимать, как вещи связаны друг с другом в объектной модели документа Photoshop (DOM). Разобраться в этом не так сложно, если посмотреть на сам Photoshop. Основным объектом в DOM Photoshop является приложение. В приложении у нас есть коллекция документов, открытых в данный момент в Photoshop.

Каждый документ содержит элементы, такие как слои (называемые ArtLayers), группы слоев (LayerSets), каналы, состояния истории и т. д., как и в обычном документе PSD.

Ниже представлена ​​упрощенная визуализация DOM Photoshop. Более подробную иерархию сдерживания можно найти на странице 12 «Руководства по созданию сценариев Adobe Photoshop CS6» (PDF).

У каждого из этих объектов есть свои свойства и методы, с которыми вы можете работать. Например, чтобы изменить непрозрачность выбранного слоя в документе, вы должны перейти в «Приложение» → «Документ» → «Слой» → «Непрозрачность» и установить нужное значение. Код будет выглядеть так:

Как вы уже догадались, activeDocument и activeLayer определяют текущий выбранный документ и слой.

Описания большинства объектов, их свойств и методов можно найти в «Справочнике по сценариям JavaScript для Adobe Photoshop CS6» (PDF) или в наборе инструментов ExtendedScript, выбрав «Справка» → «Средство просмотра объектной модели» .

Давайте посмотрим, как это работает на реальном примере. В следующем разделе мы напишем собственный сценарий на основе действия.

Обновление действия RotateMe в виде скрипта

Несколько лет назад на Рождество у меня возникла идея нарисовать снежинки.

Рисуем снежинку 101

Дублировать и вращать каждый стебель вручную утомительно, поэтому я придумал действие, чтобы автоматизировать его. Алгоритм выглядит следующим образом:

  1. Дублируйте основу.
  2. Поверните его на любое количество градусов, которое вы выбрали, используя инструмент "Трансформация".
  3. Дублируйте слой.
  4. Используйте функцию "Повторить преобразование".
  5. Повторяйте шаги 4 и 5, пока не получите полный круг.

Довольно аккуратно. Но у действия был недостаток: вы можете установить только определенное количество стеблей для снежинки, в соответствии с количеством градусов, которое вы установили на третьем шаге алгоритма.

Когда я еще не был знаком со сценариями, я просто сделал несколько версий экшена, каждая из которых создавала снежинку с разным количеством стеблей.

Сегодня мы переделаем это действие в виде динамического скрипта, который принимает ваши данные о количестве стеблей. Начнем!

Алгоритм

Когда вы начинаете писать сценарий, всегда полезно сначала определить алгоритм, прежде чем копаться в самом коде. В нашем случае алгоритм будет работать так:

  1. Попросите пользователя ввести количество стеблей.
  2. Рассчитать угол поворота.
  3. Продублируйте и поверните слой на число, указанное в первом шаге.

Начнем с сохранения текущего или выбранного слоя в переменную для дальнейшего использования:

Обратите внимание, что в JavaScript вы можете пометить строку двойной косой чертой ( // ), чтобы сделать ее комментарием. Комментарии используются для описания частей кода для дальнейшего использования и не влияют на поведение скрипта.

Теперь перейдем к нашему алгоритму.

1. Запросить ввод данных у пользователя

Мы можем получить ввод от пользователя с помощью функции приглашения(сообщение, значение по умолчанию[, заголовок]). Эта функция показывает диалоговое окно с сообщением и полем ввода, которое содержит значение по умолчанию. Когда пользователь нажимает «ОК», функция возвращает введенное значение; поэтому мы должны сохранить его в переменной, чтобы иметь возможность использовать его.

Обратите внимание, что я использовал в сообщении originalStem.name, поэтому в диалоговом окне будет отображаться имя выбранного слоя.

В Mac OS X первая строка сообщения выделена жирным шрифтом и служит заголовком. Итак, наше основное сообщение должно быть на второй строке. Чтобы создать новую строку, введите n .

В Windows вы можете указать третий аргумент в функции для установки заголовка:

Если мы запустим код в Photoshop, появится следующее диалоговое окно:

Когда пользователь нажмет "ОК", введенное значение будет сохранено в переменной StemsAmount. Если пользователь нажмет «Отмена», функция вернет нулевое значение. Мы воспользуемся этим позже.

2. Вычислить угол поворота

Чтобы рассчитать угол поворота, нужно разделить 360 градусов (полный круг) на количество стеблей:

3. Дублировать и вращать

Теперь у нас есть все необходимое для создания дубликатов нашего стебля. Для этого воспользуемся циклом for. Это позволяет нам многократно запускать строки кода столько раз, сколько мы хотим. Наш цикл будет выглядеть так:

Обратите внимание, что первый экземпляр объекта в программировании имеет значение 0 , но, поскольку наш первый слой уже находится на холсте, вместо этого мы начинаем цикл с 1.

Чтобы дублировать и поворачивать наш слой, мы будем использовать методы дублирования() и rotate(angle, AnchorPosition): количество слоев, которые нужно повернуть под углом, умножается на проиндексированное количество дубликатов. AnchorPosition определяет точку, вокруг которой будет вращаться слой. Вы можете увидеть эту точку, когда используете инструмент «Трансформация» в Photoshop — она выглядит как маленький кружок с перекрестием. В сценариях он имеет только 9 заданных значений, то есть 9 позиций точки привязки:

В нашем случае это нижний центр слоя, BOTTOMCENTER. Photoshop использует множество других констант здесь и там в некоторых функциях, которые вы можете найти на странице 197 «Справочника по Adobe Photoshop CS6 JavaScript» (PDF).

Итак, наш цикл будет выглядеть так:

И завершенный код будет выглядеть следующим образом. Вы можете попробовать запустить его.

Последние штрихи

И завершенный код будет выглядеть следующим образом. Вы можете попробовать запустить его.

Последние штрихи

Обычно я стараюсь достичь основной цели с помощью скрипта, и когда все работает правильно, я начинаю дорабатывать код. В нашем случае мы должны убедиться, что пользователь вводит допустимое число в поле подсказки, т. е. положительное целое число, большее единицы.

Кроме того, чтобы Photoshop не сошел с ума, мы ограничим количество стеблей, скажем, до 100.Для этого мы будем использовать цикл while, чтобы показать пользователю сообщение об ошибке в случае недопустимой отправки, и окно подсказки будет отображаться до тех пор, пока пользователь не введет допустимое значение или не нажмет кнопку «Отмена» (помните что подсказка возвращает null, если пользователь нажимает «Отмена»).

Новый код выглядит так:

Как вы могли заметить, мы используем функцию isNaN(value), которая возвращает true, если value не является числом, и parseInt(value) для преобразования значения в целое число при вычислении угла поворота.

Следующее, что мы будем делать, это управлять слоями, переименовывая наши новые слои, добавляя к ним индекс. Также, чтобы убедиться, что мы не перепутали слои документа, давайте объединим наши основы в группу.

Переименование слоев — несложная задача. Мы просто воспользуемся свойством слоя name и добавим к нему порядковый номер:

Группа в Photoshop API называется LayerSet, и мы можем получить доступ ко всем группам документа, вызвав свойство layerSets. Чтобы добавить новую группу в документ, мы должны вызвать метод add() набора слоев:

Затем, чтобы добавить слой в группу, мы будем использовать функцию перемещения (relativeObject, ElementPlacement). Обратите внимание, что функция move() перемещает слой в стеке слоев, а не на холсте. (Вы можете переместить слой на холсте с помощью функции translate(deltaX[, deltaY]).)

ElementPlacement — еще одна константа, определяющая, как мы разместим наш слой относительно… ну, относительного объекта. В нашем случае мы будем использовать ElementPlacement.INSIDE, чтобы поместить исходный слой в группу:

Мы будем размещать каждую новую копию слоя внизу всех слоев в группе, используя ElementPlacement.PLACEATEND . В результате все наши слои расположены в порядке возрастания, первый слой вверху, а последний внизу:

Подробнее о константе ElementPlacement можно прочитать на странице 202 документа «Справочник по JavaScript для Adobe Photoshop CS6» (PDF).

Окончательный код

Вот оно! RotateMe.jsx готов. Наш окончательный код выглядит так:

Это было не слишком сложно, не так ли?

Теперь вы можете поместить его в папку Photoshop/Presets/Scripts/ и запустить его, выбрав «Файл» → «Сценарии» в Photoshop. Использование разных фигур с разными значениями может дать интересные результаты:

Заключение

Как видно из количества ссылок в разделе ресурсов ниже, о написании сценариев можно рассказать гораздо больше, чем может уместиться во вводной статье. Но я надеюсь, что то немногое, что мы описали сегодня, вызовет у вас интерес и покажет, насколько мощными и полезными являются сценарии.

Если вы решите углубиться в это, давайте учиться вместе и делиться нашим опытом. Задавайте свои вопросы и делитесь своими достижениями в комментариях. Если вы не кодер, подумайте о том, чтобы оставить идею для сценария; возможно, это сделает другой читатель.

Давайте вместе сделаем Photoshop еще более полезным!

Ресурсы

Я все еще изучаю сценарии Photoshop, и вот несколько ресурсов, которые мне помогают в этом:

Итак, чем же так хороши сценарии и что они могут делать такого, чего нельзя сделать с помощью традиционных действий? Что ж, несмотря на то, что действия (включая пакеты и капли) чрезвычайно эффективны и гибки, у них есть много ограничений, которых нет у скриптов.

Рассмотрите, например, такую ​​простую вещь, как переключение видимости текущего слоя (т. е. отключение слоя, если он включен, и наоборот). Вы можете легко записать действие для включения или выключения слоя, но вы не можете создать действие, которое переключает видимость. Проблема в том, что действия не способны к принятию решений или "условной логике".

Действия также ограничиваются выполнением команд в размещенном приложении, тогда как сценарии могут взаимодействовать и обмениваться информацией с любым (или всеми) приложениями в Creative Suite. Например, вы можете написать сценарий, который инициирует процедуру в Adobe Illustrator CS3, а затем передает результаты в Adobe Photoshop CS3 для завершения. Вот это уже круто!

Некоторые приложения Creative Suite даже позволяют использовать сценарии для настройки пользовательского интерфейса и создания пользовательских команд и панелей.

Установка скриптов

Установка скриптов во многом аналогична установке любых других предустановок. Сначала скопируйте скрипт в подпапку Presets/Scripts:

Mac: /Applications/Adobe Photoshop CS2/Presets/Scripts/
ПК: C:\Program Files\Adobe\Adobe Photoshop CS2\Presets\Scripts\

Обратите внимание, что вы также можете создавать подпапки внутри папки Presets/Scripts. Это удобно, если у вас много скриптов или вы хотите хранить свои собственные скрипты отдельно от скриптов, приобретенных у третьих лиц.

Совет. Скрипты и/или папки со скриптами можно отключить (т. е. скрыть от Photoshop), добавив к их именам префикс тильды (например, "~Disabled-Script.jsx").

Скрипты внутри действий

Кроме того, вы можете добавить сценарий к действию (независимо от того, находится ли оно в режиме записи или нет) с помощью команды «Вставить элемент меню» на панели «Действие»:

Теперь при воспроизведении действия вставленный сценарий будет выполняться как часть последовательности команд.

Примечание. Сценарии внутри действий указываются по их абсолютному пути (т. е. полному пути к сценарию на локальном компьютере). Это означает, что если вы хотите поделиться своими действиями с другими людьми, они должны установить скрипт в том же месте на своем компьютере, чтобы действие работало правильно. В качестве альтернативы они могут просто перезаписать или повторно вставить сценарий в действие.

Сценарии, основанные на событиях

Сценарии (и действия) также могут выполняться автоматически в зависимости от события, например при запуске, открытии документа или создании нового документа. Скрипты такого типа называются "скриптами, основанными на событиях".

  1. Установите флажок Разрешить событиям запускать сценарии/действия.
  2. Выберите событие в раскрывающемся списке «Событие Photoshop».
  3. Нажмите переключатель "Сценарий".
  4. Выберите нужный сценарий в раскрывающемся списке "Сценарий" (или выберите "Обзор" в нижней части раскрывающегося списка).
  5. Нажмите кнопку "Добавить", чтобы добавить событие в список событий.
  6. Наконец нажмите кнопку "Готово", чтобы применить все изменения и активировать событие.

Чтобы удалить событие, выберите его по имени в Списке событий и нажмите кнопку Удалить — или используйте кнопку Удалить все, чтобы удалить все события из Списка событий.

Чтобы отключить все события, не удаляя их, просто отключите параметр Включить события для запуска сценариев/действий. Опять же, вам нужно нажать кнопку "Готово", чтобы применить все изменения.

Оба этих сценария находятся в корне папки Presets/Scripts и служат прекрасным примером того, что можно сделать с помощью сценариев. Просто будьте осторожны, чтобы не изменить исходные сценарии — по крайней мере, не сделав предварительно резервную копию.

Инструментарий ExtendScript

Независимо от того, устанавливаете ли вы одно приложение CS3 или весь пакет Creative Suite, два других приложения устанавливаются по умолчанию: Adobe Bridge и ExtendScript Toolkit.

Набор инструментов ExtendScript служит полнофункциональной средой разработки и тестирования для ExtendScript во всех приложениях CS3. Набор инструментов включает в себя такие функции, как подсветка синтаксиса, множественная отмена и повтор действий, поддержка Unicode и многое другое.

ExtendScript — это расширенная реализация JavaScript от Adobe, которая предлагает все стандартные функции JavaScript, а также:

  • независимое от платформы представление файлов и папок (это означает, что сценарии, написанные на Mac, будут работать на компьютере под управлением Windows без изменений);
  • инструменты для создания расширяемых локализованных пользовательских интерфейсов на основе сценариев;
  • коммуникация между приложениями; и многое другое.

Полный обзор ExtendScript и набора инструментов ExtendScript Toolkit см. в главе 9 Справочного руководства по JavaScript.

Совет. Последнюю версию ExtendScript Toolkit можно бесплатно загрузить в Центре разработчиков Adobe Bridge .

Справочные документы

Чтобы получить более полное представление о сценариях или узнать, как создавать собственные сценарии, ознакомьтесь со множеством бесценных ресурсов, установленных по умолчанию в следующем расположении:

Mac: /Applications/Adobe Photoshop CS2/Руководство по созданию сценариев/
ПК: C:\Program Files\Adobe\Adobe Photoshop CS2\Руководство по созданию сценариев\

  • Руководство по созданию сценариев Photoshop — введение в создание сценариев Photoshop CS3 (включает несколько примеров сценариев)
  • Справочное руководство по AppleScript — описывает объекты и команды AppleScript Photoshop CS3
  • Справочное руководство по JavaScript — описывает объекты и команды JavaScript Photoshop CS3
  • Справочное руководство по VisualBasic — описывает объекты и команды VBScript Photoshop CS3

Совет. Руководства по созданию сценариев и справочные руководства также доступны в электронном формате (PDF) в Центре разработчиков Adobe Photoshop.

Дополнительные ресурсы

Ниже приведены несколько онлайн-ресурсов, посвященных обмену сценариями и информацией о сценариях:

Полное руководство по JavaScript

Существует множество замечательных ресурсов и книг по JavaScript, но JavaScript: Полное руководство , написанное Дэвидом Фланаганом и опубликованное O'Reilly , является обязательным справочником для всех, кто серьезно относится к JavaScript.

Теперь пятое издание «JavaScript: Полное руководство» было полностью переработано и расширено, чтобы охватить JavaScript, который используется в современных приложениях «Web 2.0». В этой книге также описаны все классы, объекты, конструкторы, методы, функции, свойства и константы, определенные в JavaScript 1.5 и ECMAScript версии 3.

Для получения дополнительной информации о JavaScript: полное руководство посетите веб-сайт O'Reilly .Вы также можете загрузить образец главы в формате PDF по следующему адресу: Глава 21: JavaScript и XML .

Практический пример

Чтобы узнать больше о написании сценариев для Photoshop и увидеть практический пошаговый пример, обязательно прочитайте часть 2 этого руководства: Создание сценариев для Photoshop, часть 2 — практический пример.

Если вам понравилось это руководство, рассмотрите возможность поддержки этого сайта. Как всегда, я приветствую ваши отзывы и предложения. Кроме того, если у вас есть проект сценария, который вы хотели бы обсудить со мной, свяжитесь со мной и сообщите подробности, и я буду рад предоставить вам бесплатную оценку.

Возможно, вы слышали об Экшенах Photoshop. Они обеспечивают простой способ автоматизации задач. Сегодня мы покажем вам, как использовать сценарии Photoshop.

Photoshop — прекрасный инструмент для редактирования изображений, и не секрет, что мы его большие поклонники. Ранее мы рассказывали, как создать простой логотип и как исправить переэкспонированные фотографии, поэтому автоматизация — это следующий логический шаг после того, как вы освоите основы.

Возможно, вы слышали об Экшенах Photoshop. Они обеспечивают простой способ автоматизации задач. Сегодня я покажу вам, как использовать сценарии Photoshop. Сценарии Photoshop немного мощнее, чем действия, и предоставляют вам возможность изменять поведение сценария во время выполнения — чего действия не могут сделать!

Не волнуйтесь, если это звучит сложно: сценарии написаны на JavaScript, простом, но мощном языке.

Если вы поклонник GIMP или не хотите тратить деньги на Photoshop, ознакомьтесь с нашим руководством по автоматизации GIMP с помощью скриптов.

Ваш первый сценарий: изменение размера изображений

При написании сценариев вы можете использовать набор инструментов ExtendScript. Вам не обязательно использовать это, вы можете использовать любой текстовый редактор, который вам нравится (мне нравится Sublime Text), но вместо этого использование этого набора инструментов дает много преимуществ. Самым большим преимуществом является то, что вы можете устанавливать точки останова, которые упрощают отладку кода и выявление любых ошибок.

Набор инструментов ExtendScript включен в вашу подписку Creative Cloud, поэтому установите его из приложения Creative Cloud или с веб-сайта, указанного выше.

Откройте набор инструментов после установки. Вам будет представлен этот довольно устаревший интерфейс:

Вот код вашего первого скрипта — скопируйте и вставьте его в главное окно кода слева:

Давайте разберем, что делает этот код. В переменной current_document хранится активный документ object из Photoshop. Доступ к этому осуществляется с помощью синтаксиса app.activeDocument. Если у вас не запущен Photoshop с открытым документом, этот код сгенерирует исключение. Исключения – это способ остановить выполнение кода. Этот скрипт не может продолжаться, если нет документа!

Переменная new_width хранит желаемую ширину вашего нового документа.

Наконец, метод resizeImage изменяет размер изображения. Доступ к этому должен быть получен через переменную current_document. Вам нужно передать новую ширину (преобразованную в пиксели с помощью метода UnitValue) и метод ResampleMethod BICUBIC.

Вам доступно пять основных методов передискретизации. Все они различаются по скорости и качеству, так что поэкспериментируйте с ними (хотя Bicubic подходит для большинства целей). Вот краткий обзор различий:

  1. Ближайший сосед: очень быстрый, но простой.
  2. Билинейный: лучше, чем ближайший сосед, но медленнее и хуже, чем бикубический.
  3. Bicubic: очень хорошие результаты, но большие вычислительные ресурсы.
  4. Bicubic Smoother: улучшенная версия Bicubic для масштабирования (увеличения).
  5. Bicubic Sharper: расширенная версия Bicubic, предназначенная для понижения дискретизации (уменьшения размера).

Не забывайте писать их с заглавной буквы при использовании в коде.

Теперь, когда вы поняли код, пришло время его запустить! Убедитесь, что у вас открыт Photoshop вместе с документом.

В верхней части окна ExtendScript Toolkit измените целевое раскрывающееся меню (вверху слева) с ExtendScript Toolkit CC на Adobe Photoshop CC 2017 (или любую другую версию Photoshop). Если вы пишете сценарии для других приложений Adobe, вы можете изменить это на эти.

Теперь нажмите кнопку воспроизведения справа от целевого раскрывающегося списка в правом верхнем углу вашего кода.

Если все работает правильно, размер вашего документа теперь изменен (не забудьте его сохранить). Консоль JavaScript в правом верхнем углу вашего инструментария покажет результат вашего скрипта. Поскольку вывода нет, будет указано Результат: Не определено.

При возникновении проблемы (например, при возникновении исключения) ваш код не запустится, и вы увидите оранжевую полосу примерно в месте возникновения проблемы.

Возможно, это простая опечатка, поэтому после остановки скрипта (элементы управления вверху справа > кнопка остановки) еще раз проверьте:

  • Ваш код правильный и не содержит опечаток.
  • Photoshop запущен.
  • У вас есть документ, открытый в Photoshop.

Запуск скриптов

Теперь ваш код работает правильно, пришло время добавить его в Photoshop.

В наборе инструментов выберите «Файл» > «Сохранить» и сохраните сценарий в подходящем месте с подходящим именем. По умолчанию это будет папка Adobe Scripts. Обратите внимание, что скрипты должны заканчиваться в формате .jsx.

В Photoshop выберите «Файл» > «Сценарии» > «Диспетчер событий сценариев». Установите флажок Включить события для запуска сценариев/действий.

После включения этот интерфейс позволяет настроить запуск существующих сценариев при выполнении определенных действий. Есть несколько ключевых областей:

  1. Событие Photoshop. Это время запуска сценария. Вы можете выбрать один из множества вариантов, например, при печати, при открытии нового документа и т. д.
  2. Сценарий. Это сценарий для запуска. Есть несколько встроенных базовых скриптов, но вы также можете назначить здесь один из своих собственных скриптов.
  3. Действие. Если вы не используете скрипт, вы можете вместо него выбрать базовое действие, например сохранить в PDF.

Выберите «Сценарий», а затем нажмите «Обзор». Выберите свой сценарий. Идите вперед и выберите событие, которое запустит ваш скрипт.

После настройки нажмите «Добавить», а затем «Готово». В этом меню также можно редактировать или удалять любые ранее настроенные сценарии.

Если вы не хотите привязывать сценарий к действию, настроить его еще проще. Выберите «Файл» > «Сценарии» > «Обзор». Перейдите к своему сценарию и нажмите «Открыть». Ваш скрипт немедленно запустится.

Если вы хотите видеть свой скрипт в этом меню скриптов, вам нужно скопировать его в соответствующую папку. Его можно найти в папке Presets > Scripts вашей установки Photoshop.

После копирования перезапустите Photoshop. После перезапуска ваш сценарий будет отображаться как пункт меню в меню «Файл» > «Сценарии».

Изменение размера изображений: делаем его лучше

Теперь, когда вы разобрались со сценариями Photoshop, пришло время улучшить код.

Этот код очень хорошо работает при изменении размера изображений до 670 пикселей (или любого другого размера, на который вы его изменили), но он мог бы быть и лучше. К счастью, JavaScript — очень гибкий язык!

Давайте изменим код, чтобы изображения меньше нового размера не изменялись. Вот код:

Здесь только одно изменение. Оператор if обернут вокруг метода изменения размера. Если текущая ширина документа (доступная через current_document.width) меньше новой ширины, не изменяйте размер.

Это гарантирует, что маленькие изображения не будут увеличены, что приведет к снижению качества.

Когда вы начинаете вводить код в инструментарий, он предлагает возможные изменения, которые вы можете внести, методы для вызова или свойства для доступа. Это очень полезно, и вы должны в полной мере воспользоваться этим!

И последнее изменение:

Теперь этот код содержит комментарии, которые должны быть во всем коде и которые помогут вам в будущем.

Метод повторной выборки был изменен на Bicubic Sharper, что дает несколько лучшие результаты при уменьшении масштаба изображения.

Наконец, в качестве последнего шага применены контраст и резкость.

Что вы будете кодировать?

К настоящему моменту вы должны знать все, что нужно для автоматизации всего в Photoshop! Если вы можете сделать это в Photoshop, вы, вероятно, сможете автоматизировать это. API Photoshop предоставляет доступ ко многим функциям, а их документация описывает почти все функции, к которым у вас есть доступ.

Конечно, сегодняшние примеры были только базовыми, но они охватывают основные детали — вы можете реализовать сценарий, соответствующий вашим требованиям!

Узнали ли вы что-нибудь новое сегодня? Какие ваши любимые сценарии? Дайте нам знать в комментариях ниже!

Читайте также: