2015-06-24 2 views
0

Как я могу захватить изображение по его местоположению на моей локальной машине и вставить его в слой с extendscript?Photoshop-скрипт, как добавить изображение на слой

var doc = app.documents.add(); 
var layer = doc.artLayers.add(); 
var img = new File('~/Desktop/tanks.png'); 
layer.image = img; //I want to add the image to this layer 

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

var opened = open(img); 

Но то, что я хотел бы достичь, состоит в том, чтобы открыть несколько изображений в один документ с несколькими слоями. Это можно сделать?

+0

Перейти в Adobe Bridge, выберите документы, а затем нажмите 'Сервис-> Photoshop-> Загрузка документов в Layers' –

ответ

1

Откройте каждое изображение, которое хотите консолидировать, используя открытый метод, который вы нашли. Затем выполните цикл через открытый документ и используйте дублирующий метод на объекте арт-слоя, чтобы скопировать все слои в один целевой документ. См. Фрагмент кода ниже для копирования одного слоя изображения в новый документ.

//copy the layer into the target document 
    app.activeDocument = pSourceDocument; 
    pSourceDocument.artLayers[0].duplicate(pTargetDocument); 
+0

Nice один, раздражает, что вы не можете прямо на слой! – wazzaday

0

Я нашел очень полезный скрипт для этого здесь https://forums.adobe.com/message/3946944#3946944

Я взял кусок этого сценария и он работал на меня. Прежде всего, вам нужно преобразовать слой, содержимое которого вы хотите заменить изображением на Smart Object (в другом случае содержимое слоя не может быть заменено скриптами). Для этого откройте файл, который вы хотите модифицировать в Photoshop, выберите слой, нажмите «Слой»> «Смарт-объекты»> «Группа» в «Новый смарт-объект». Теперь этот слой является интеллектуальным объектом.

Затем создайте скрипт со следующим кодом:

var replacementFile = new File("X:/file.jpg"); 
var theLayer = app.documents[0].artLayers.getByName("targetLayer"); 
theLayer = replaceContents(replacementFile); 

////// replace contents ////// 
function replaceContents (newFile) { 
// ======================================================= 
var idplacedLayerReplaceContents = stringIDToTypeID("placedLayerReplaceContents"); 
    var desc3 = new ActionDescriptor(); 
    var idnull = charIDToTypeID("null"); 
    desc3.putPath(idnull, new File(newFile)); 
    var idPgNm = charIDToTypeID("PgNm"); 
    desc3.putInteger(idPgNm, 1); 
executeAction(idplacedLayerReplaceContents, desc3, DialogModes.NO); 
return app.activeDocument.activeLayer 
}; 
Смежные вопросы