Как создать скрипт в фотошопе
Обновлено: 21.11.2024
Итак, чем же так хороши сценарии и что они могут делать такого, чего нельзя сделать с помощью традиционных действий? Что ж, несмотря на то, что действия (включая пакеты и капли) чрезвычайно эффективны и гибки, у них есть много ограничений, которых нет у скриптов.
Рассмотрите, например, такую простую вещь, как переключение видимости текущего слоя (т. е. отключение слоя, если он включен, и наоборот). Вы можете легко записать действие для включения или выключения слоя, но вы не можете создать действие, которое переключает видимость. Проблема в том, что действия не способны к принятию решений или "условной логике".
Действия также ограничиваются выполнением команд в размещенном приложении, тогда как сценарии могут взаимодействовать и обмениваться информацией с любым (или всеми) приложениями в 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").
Скрипты внутри действий
Кроме того, вы можете добавить сценарий к действию (независимо от того, находится ли оно в режиме записи или нет) с помощью команды «Вставить элемент меню» на панели «Действие»:
Теперь при воспроизведении действия вставленный сценарий будет выполняться как часть последовательности команд.
Примечание. Сценарии внутри действий указываются по их абсолютному пути (т. е. полному пути к сценарию на локальном компьютере). Это означает, что если вы хотите поделиться своими действиями с другими людьми, они должны установить скрипт в том же месте на своем компьютере, чтобы действие работало правильно. В качестве альтернативы они могут просто перезаписать или повторно вставить сценарий в действие.
Сценарии, основанные на событиях
Сценарии (и действия) также могут выполняться автоматически в зависимости от события, например при запуске, открытии документа или создании нового документа. Скрипты такого типа называются "скриптами, основанными на событиях".
- Установите флажок Разрешить событиям запускать сценарии/действия.
- Выберите событие в раскрывающемся списке «Событие Photoshop».
- Нажмите переключатель "Сценарий".
- Выберите нужный сценарий в раскрывающемся списке "Сценарий" (или выберите "Обзор" в нижней части раскрывающегося списка).
- Нажмите кнопку "Добавить", чтобы добавить событие в список событий.
- Наконец нажмите кнопку "Готово", чтобы применить все изменения и активировать событие.
Чтобы удалить событие, выберите его по имени в Списке событий и нажмите кнопку Удалить — или используйте кнопку Удалить все, чтобы удалить все события из Списка событий.
Чтобы отключить все события, не удаляя их, просто отключите параметр Включить события для запуска сценариев/действий. Опять же, вам нужно нажать кнопку "Готово", чтобы применить все изменения.
Оба этих сценария находятся в корне папки 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 — практический пример.
Если вам понравилось это руководство, рассмотрите возможность поддержки этого сайта. Как всегда, я приветствую ваши отзывы и предложения. Кроме того, если у вас есть проект сценария, который вы хотели бы обсудить со мной, свяжитесь со мной и сообщите подробности, и я буду рад предоставить вам бесплатную оценку.
Для задач, которые вы часто выполняете, вы можете легко записать ряд действий, которые помогут вам работать более эффективно.
При записи действий помните о следующих правилах:
Вы можете записать большинство, но не все, команд в действии.
Вы можете записывать операции, выполняемые с помощью инструментов «Выделение», «Перемещение», «Многоугольник», «Лассо», «Волшебная палочка», «Обрезка», «Срез», «Волшебный ластик», «Градиент», «Заливка», «Текст», «Форма», «Примечания», «Пипетка» и «Сэмплер цветов». как те, которые вы выполняете на панелях «История», «Образцы», «Цвет», «Пути», «Каналы», «Слои», «Стили» и «Действия».
Результаты зависят от переменных настроек файла и программы, таких как активный слой и цвет переднего плана. Например, 3-пиксельное размытие по Гауссу не создаст такой же эффект для файла с разрешением 72 пикселей на дюйм, как для файла с разрешением 144 пикселей на дюйм. Цветовой баланс также не работает с файлами в градациях серого.
При записи действий, включающих указание параметров в диалоговых окнах и на панелях, действие будет отражать параметры, действующие на момент записи. Если вы изменяете параметр в диалоговом окне или на панели во время записи действия, измененное значение записывается.
Большинство диалоговых окон сохраняют настройки, заданные при предыдущем использовании. Внимательно проверьте, что именно эти значения вы хотите записать.
- Модальные операции и инструменты, а также инструменты, записывающие положение, используют единицы измерения, заданные в данный момент для линейки. Модальная операция или инструмент — это операция, требующая нажатия Enter или Return для применения ее эффекта, такого как преобразование или обрезка. К инструментам, записывающим положение, относятся инструменты "Выделение", "Срез", "Градиент", "Волшебная палочка", "Лассо", "Форма", "Путь", "Пипетка" и "Примечания".
Если вы записываете действие, которое будет воспроизводиться с файлами разного размера, установите единицы измерения линейки в процентах. В результате действие всегда будет воспроизводиться в одной и той же относительной позиции на изображении.
- Вы можете записать команду «Воспроизвести», указанную в меню панели «Действия», чтобы заставить одно действие воспроизводить другое.
Когда вы создаете новое действие, используемые вами команды и инструменты добавляются к действию до тех пор, пока вы не остановите запись.
Во избежание ошибок работайте с копией: в начале действия перед применением других команд запишите команду «Файл» > «Сохранить как» и выберите «Как копию». Кроме того, вы можете нажать кнопку «Новый снимок» на панели «История», чтобы сделать снимок изображения перед записью действия.
Возможно, вы слышали об Экшенах 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 подходит для большинства целей). Вот краткий обзор различий:
- Ближайший сосед: очень быстрый, но простой.
- Билинейный: лучше, чем ближайший сосед, но медленнее и хуже, чем бикубический.
- Bicubic: очень хорошие результаты, но большие вычислительные ресурсы.
- Bicubic Smoother: улучшенная версия Bicubic для масштабирования (увеличения).
- Bicubic Sharper: расширенная версия Bicubic, предназначенная для понижения дискретизации (уменьшения размера).
Не забывайте писать их с заглавной буквы при использовании в коде.
Теперь, когда вы поняли код, пришло время его запустить! Убедитесь, что у вас открыт Photoshop вместе с документом.
В верхней части окна ExtendScript Toolkit измените целевое раскрывающееся меню (вверху слева) с ExtendScript Toolkit CC на Adobe Photoshop CC 2017 (или любую другую версию Photoshop). Если вы пишете сценарии для других приложений Adobe, вы можете изменить это на эти.
Теперь нажмите кнопку воспроизведения справа от целевого раскрывающегося списка в правом верхнем углу вашего кода.
Если все работает правильно, размер вашего документа теперь изменен (не забудьте его сохранить). Консоль JavaScript в правом верхнем углу вашего инструментария покажет результат вашего скрипта. Поскольку вывода нет, будет указано Результат: Не определено.
При возникновении проблемы (например, при возникновении исключения) ваш код не запустится, и вы увидите оранжевую полосу примерно в месте возникновения проблемы.
Возможно, это простая опечатка, поэтому после остановки скрипта (элементы управления вверху справа > кнопка остановки) еще раз проверьте:
- Ваш код правильный и не содержит опечаток.
- Photoshop запущен.
- У вас есть документ, открытый в Photoshop.
Запуск скриптов
Теперь ваш код работает правильно, пришло время добавить его в Photoshop.
В наборе инструментов выберите «Файл» > «Сохранить» и сохраните сценарий в подходящем месте с подходящим именем. По умолчанию это будет папка Adobe Scripts. Обратите внимание, что скрипты должны заканчиваться в формате .jsx.
В Photoshop выберите «Файл» > «Сценарии» > «Диспетчер событий сценариев». Установите флажок Включить события для запуска сценариев/действий.
После включения этот интерфейс позволяет настроить запуск существующих сценариев при выполнении определенных действий. Есть несколько ключевых областей:
- Событие Photoshop. Это время запуска сценария.Вы можете выбрать один из множества вариантов, например, при печати, при открытии нового документа и т. д.
- Сценарий. Это сценарий для запуска. Есть несколько встроенных базовых скриптов, но вы также можете назначить здесь один из своих собственных скриптов.
- Действие. Если вы не используете скрипт, вы можете вместо него выбрать базовое действие, например сохранить в PDF.
Выберите «Сценарий», а затем нажмите «Обзор». Выберите свой сценарий. Идите вперед и выберите событие, которое запустит ваш скрипт.
После настройки нажмите «Добавить», а затем «Готово». В этом меню также можно редактировать или удалять любые ранее настроенные сценарии.
Если вы не хотите привязывать сценарий к действию, настроить его еще проще. Выберите «Файл» > «Сценарии» > «Обзор». Перейдите к своему сценарию и нажмите «Открыть». Ваш скрипт немедленно запустится.
Если вы хотите видеть свой скрипт в этом меню скриптов, вам нужно скопировать его в соответствующую папку. Его можно найти в папке Presets > Scripts вашей установки Photoshop.
После копирования перезапустите Photoshop. После перезапуска ваш сценарий будет отображаться как пункт меню в меню «Файл» > «Сценарии».
Изменение размера изображений: делаем его лучше
Теперь, когда вы разобрались со сценариями Photoshop, пришло время улучшить код.
Этот код очень хорошо работает при изменении размера изображений до 670 пикселей (или любого другого размера, на который вы его изменили), но он мог бы быть и лучше. К счастью, JavaScript — очень гибкий язык!
Давайте изменим код, чтобы изображения меньше нового размера не изменялись. Вот код:
Здесь только одно изменение. Оператор if обернут вокруг метода изменения размера. Если текущая ширина документа (доступная через current_document.width) меньше новой ширины, не изменяйте размер.
Это гарантирует, что маленькие изображения не будут увеличены, что приведет к снижению качества.
Когда вы начинаете вводить код в инструментарий, он предлагает возможные изменения, которые вы можете внести, методы для вызова или свойства для доступа. Это очень полезно, и вы должны в полной мере воспользоваться этим!
И последнее изменение:
Теперь этот код содержит комментарии, которые должны быть во всем коде и которые помогут вам в будущем.
Метод повторной выборки был изменен на Bicubic Sharper, что дает несколько лучшие результаты при уменьшении масштаба изображения.
Наконец, в качестве последнего шага применены контраст и резкость.
Что вы будете кодировать?
К настоящему моменту вы должны знать все, что нужно для автоматизации всего в Photoshop! Если вы можете сделать это в Photoshop, вы, вероятно, сможете автоматизировать это. API 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 % от исходного размера. Вы должны пройти следующие шаги:
- Откройте изображение → Размер изображения.
- Введите 150 % по ширине и высоте.
- Нажмите "ОК".
Тот же процесс со скриптом будет выглядеть следующим образом:
- Вызовите приложение: app
- Нацелить документ: activeDocument
- Вызовите функцию для изменения размера изображения: 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
Дублировать и вращать каждый стебель вручную утомительно, поэтому я придумал действие, чтобы автоматизировать его. Алгоритм выглядит следующим образом:
- Дублируйте основу.
- Поверните его на любое количество градусов, которое вы выбрали, используя инструмент "Трансформация".
- Дублируйте слой.
- Используйте функцию "Повторить преобразование".
- Повторяйте шаги 4 и 5, пока не получите полный круг.
Довольно аккуратно. Но у действия был недостаток: вы можете установить только определенное количество стеблей для снежинки, в соответствии с количеством градусов, которое вы установили на третьем шаге алгоритма.
Когда я еще не был знаком со сценариями, я просто сделал несколько версий экшена, каждая из которых создавала снежинку с разным количеством стеблей.
Сегодня мы переделаем это действие в виде динамического скрипта, который принимает ваши данные о количестве стеблей. Начнем!
Алгоритм
Когда вы начинаете писать сценарий, всегда полезно сначала определить алгоритм, прежде чем копаться в самом коде. В нашем случае алгоритм будет работать так:
- Попросите пользователя ввести количество стеблей.
- Рассчитать угол поворота.
- Продублируйте и поверните слой на число, указанное в первом шаге.
Начнем с сохранения текущего или выбранного слоя в переменную для дальнейшего использования:
Обратите внимание, что в 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, и вот несколько ресурсов, которые мне помогают в этом:
Читайте также: