Заменить изображение слоя в скриптах Photoshop - PullRequest
1 голос
/ 13 апреля 2019

Как заменить изображение в слое? Для текстового слоя я могу легко сделать doc.layerSets.getByName('title').textItem.contents = 'New Text'. Итак, мой вопрос, есть ли что-то похожее на textItem, которое работает с изображениями. что-то вроде imageItem. чтобы я мог заменить изображение в слое?

1 Ответ

2 голосов
/ 15 апреля 2019

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

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

Другим способом, и, возможно, более программируемым, будет просто повторять групповые слои искусства, дублировать каждый слой и объединять их с целевым слоем. Я приведу вам пример:

var doc = app.activeDocument;
var target = doc.layers.getByName('target');
var group = doc.layerSets.getByName('images');
var gal = group.artLayers;

// Iterate through art layers from group "images"
for (var i = 0; i < gal.length; i++) {
  // Duplicate current layer and put it before the target layer
  var temp = gal[i].duplicate(target, ElementPlacement.PLACEBEFORE);

  // Merge the current layer with the target
  // (the target variable has to be updated because it's now a new merged layer)
  target = temp.merge();
}

Это прекрасно работает с простым художественным целевым слоем. Теперь, если целевой слой более сложный (т. Е. У него есть свойства смешивания, маски и т. Д.), И вы хотите сохранить его, вам придется прибегнуть к методу «вставить на месте», описанному выше.

...