Как автоматизировать Photoshop с помощью скриптов Photoshop
Креатив

Как автоматизировать Photoshop с помощью скриптов Photoshop

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

Image Credit: whiteMocca via Shutterstock.com.

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

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

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

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

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

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

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

После установки откройте набор инструментов. Перед вами откроется довольно устаревший интерфейс:

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

current_document = app.activeDocument;
new_width =670

current_document.resizeImage(
UnitValue(new_width,'px'),
null
null
ResampleMethod.BICUBIC
);

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

Переменная new_width хранит ширину, которую вы хотите, чтобы имел ваш новый документ

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

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

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

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

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

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

Теперь нажмите кнопку Play справа от выпадающего списка целей в правой верхней части кода

Если все прошло правильно, то теперь размер вашего документа изменен (не забудьте сохранить его). В JavaScript Console в правом верхнем углу вашего инструментария будет показан вывод вашего сценария. Поскольку вывода нет, здесь будет написано Result: Undefined

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

Это может быть простая опечатка, поэтому после остановки скрипта ( Top Right Controls > Stop Button ) перепроверьте:

  • Ваш код корректен и не содержит опечаток.
  • Photoshop запущен.
  • В Photoshop открыт документ.

Запуск сценариев

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

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

В Photoshop перейдите в File > Scripts > Script Events Manager. Отметьте Enable Events To Run Scripts/Actions

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

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

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

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

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

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

После копирования перезапустите Photoshop. После перезапуска ваш скрипт будет виден как пункт меню в меню File > Scripts

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

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

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

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

current_document = app.activeDocument;
new_width =670

if(current_document.width > new_width) {
current_document.resizeImage(
  UnitValue(new_width,'px'),
  null
  null
  ResampleMethod.BICUBIC
);

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

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

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

Вот последнее изменение:

current_document = app.activeDocument;// Get the active document
new_width =670// new width to ressize to

if(current_document.width > new_width) {
// if document is larger than new size
current_document.resizeImage(
  UnitValue(new_width,'px'),
  null
  null
  ResampleMethod.BICUBICSHARPER
);

current_document.activeLayer.autoContrast();// Apply contrast
current_doc.activeLayer.applySharpen();// Apply Sharpen

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

Метод resample изменен на Bicubic Sharper – это дает немного лучшие результаты при уменьшении масштаба изображений

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

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

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

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

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

Image Credit: whiteMocca via Shutterstock.com

Об авторе

Алексей Белоусов

Привет, меня зовут Филипп. Я фрилансер энтузиаст . В свободное время занимаюсь переводом статей и пишу о потребительских технологиях для широкого круга изданий , не переставая питать большую страсть ко всему мобильному =)

Комментировать

Оставить комментарий