Это вторая часть серии Photoshop Automation. В предыдущем посте мы рассмотрели основы написания сценариев и документирования CRUD с использованием Javascript. В этом посте мы углубимся и узнаем о работе со слоями и о том, как экспортировать документ в нужный формат.

  1. Установка
  2. Первый сценарий: «Привет, Фотошоп!»
  3. Работа с документами
  4. Работа со слоями
  5. Экспорт документов
  6. Работа с данными
  7. Все вместе: Мстители
  8. "Использованная литература"

Работа со слоями

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

Давайте возьмем текущий документ и создадим новый слой «Фон»и заполним его красным цветом.

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

// Get the current document
var document = app.activeDocument;
// Create color object of color red
var fillColor = new SolidColor();
fillColor.rgb.red = 222;
fillColor.rgb.green = 0;
fillColor.rgb.blue = 0;
// Add a new layer called Background
var layer = document.artLayers.add();
layer.name = "Background";
// Select the entire layer
document.selection.selectAll()
// Fill the selection with color
document.selection.fill(fillColor);
// Deselect
document.selection.deselect();

Работа с наборами слоев

Набор слоев или группы — это наборы слоев. В этот документ мы добавим набор слоев «ТЕКСТ», в котором будут размещены все наши текстовые слои.

var layerSets = document.layerSets.add();
layerSets.name = "TEXT";

К этой группе слоев «ТЕКСТ» добавим новый текстовый слой.

// Create a new text layer inside our layour group called layerSets
var newLayer = layerSets.artLayers.add();
newLayer.kind = LayerKind.TEXT;newLayer.name = "MoveName"
// Set font size, font style and position
newLayer.textItem.size = 50;
newLayer.textItem.font = "Verdana";
newLayer.textItem.position = [350, 400];
newLayer.textItem.contents = "AVENGERS";

Выполнение действий со слоями

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

Давайте изменим цвет фона нашего «Фон» на зеленый, а режим наложения нашего слоя «MovieName» на МЯГКИЙ СВЕТ. Чтобы выполнить операцию выбора на «Фоновом », мы сначала должны установить его в качестве активного слоя документов, а затем выполнить операцию выбора.

Поскольку слой «MovieName» находится внутри группы слоев, нам сначала нужно будет получить группу слоев по имени, а затем извлечь из нее слой.

var fillColor = new SolidColor();
fillColor.rgb.red = 0;
fillColor.rgb.green = 183;
fillColor.rgb.blue = 159;
// Set the background layer as the active layer
document.activeLayer = document.artLayers.getByName ('Background');
document.selection.selectAll();
document.selection.fill(fillColor);
document.selection.deselect(); 
// Changing the blend mode of the text layer to softlight
var textLayer = document.layerSets.getByName ('TEXT').layers.getByName('MovieName');
textLayer.blendMode = BlendMode.SOFTLIGHT;

Удаление слоев. Мы можем удалить слой из документа, вызвав метод remove(). Следующий код удаляет слой «Фон» и набор слоев «ТЕКСТ».

// Get the layer by name and call remove
document.artLayers.getByName ('Background').remove();
// Get the layer set by name and call removedocument.layerSets.getByName ('TEXT').remove();

Однако, если мы просто хотим удалить все слои в наборе слоев, но не в наборе слоев (группе), нам нужно сначала получить все слои в этом наборе слоев и используйте removeAll(), чтобы удалить все слои в этом наборе слоев.

// Get all layers in a layerset and call removeAll()document.layerSets.getByName ('TEXT').layers.removeAll()

Экспорт документов

После работы над документом Photoshop последним шагом часто является его экспорт в формате JPEG или PNG. В этом разделе мы экспортируем наш текущий документ Photoshop в виде файла JPEG. Как и при сохранении документа, мы будем использовать метод document.saveAs(file). Этот метод также принимает второй необязательный аргумент, который указывает тип файла, в котором файл должен быть сохранен, а также дополнительные параметры конфигурации.

Следующий код сохраняет текущий файл как файл JPEG.

// Get the active document
var document = app.activeDocument;
// export file options
var jpegConfig = new JPEGSaveOptions();
jpegConfig.quality = 10;
// File path to export
var filename = 'avengers.jpg';
var file = File(filename);
document.saveAs (file, jpegConfig);

Однако, если вы выполните этот код, вы увидите всплывающее диалоговое окно сохранения файла Photoshop, которое приостанавливает выполнение скрипта.

Это нормально, если мы экспортируем одно изображение, но если мы экспортируем несколько изображений, нам нужно будет ввести имя файла и нажать кнопку «Сохранить» вручную. Поскольку мы заранее знаем, как называется файл и где мы собираемся сохранить наш файл, мы можем опустить это всплывающее окно, отключив всплывающие диалоговые окна.

Это можно сделать, задав для app.displayDialogs значение DialogModes.NO. Добавьте следующую строку в начало скрипта.

app.displayDialogs = DialogModes.NO;

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

В следующем и последнем посте этой серии мы применим все, что мы узнали, на практике, автоматизировав создание 12 именных карточек Мстителей.