Заменить изображение слоя в сценариях Photoshop

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


person Waeez    schedule 12.04.2019    source источник
comment
Так в чем именно твоя проблема? Что не работает для вас? Какая у вас структура psd?   -  person Sergey Kritskiy    schedule 13.04.2019
comment
Есть группа под названием «изображения», которая имеет несколько слоев, и все слои содержат изображение. Есть еще один слой, называемый «целевой». Я хочу перебрать группу «изображения», поместить каждое изображение в «целевой» слой и экспортировать его.   -  person Waeez    schedule 13.04.2019
comment
Пожалуйста, отредактируйте свой вопрос](stackoverflow.com/posts/55660119/edit), если вы хотите добавить к нему информацию. Есть ли причина, по которой вы не можете просто поместить рамку в тот же файл PSD, а затем переключать видимость слоев изображения?   -  person cybernetic.nomad    schedule 14.04.2019


Ответы (1)


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

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

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

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();
}

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

person Toribio    schedule 15.04.2019
comment
Есть ли способ получить расширение gal[i], чтобы проверить, является ли это png или jpg? - person Waeez; 21.04.2019