Photoshop脚本如何将图像添加到图层

Photoshop script how to add image to a layer

如何通过图像在本地计算机上的位置抓取图像并将其插入到带有 extendscript 的图层中?

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

我似乎只能打开图像作为背景,并在此过程中创建一个新的 photoshop 文档;

var opened = open(img);

但我想实现的是将多个图像打开到同一个文档中作为多个图层。这能做到吗?

使用找到的打开方法打开每个要合并的图像。然后循环打开文档并使用艺术图层对象上的复制方法将所有图层复制到单个目标文档中。请参阅下面的代码片段以将单层图像复制到新文档。

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

我在这里找到了一个非常有用的脚本 https://forums.adobe.com/message/3946944#3946944

我接受了这个脚本的一部分,它对我有用。首先,您需要将要用图像替换内容的图层转换为智能对象(否则图层内容不能被脚本替换)。为此,请在 Photoshop 中打开要修改的文件,select 图层,单击“图层”>“智能对象”>“分组到新智能对象”。现在这一层是一个智能对象。

然后使用以下代码创建一个脚本:

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