如何在 Photoshop 脚本中访问画板元素?

问题描述 投票:0回答:1

我需要通过脚本替换 Photoshop 模板中的文本元素。当它是常规文件时,一切正常。但如果是使用画板的项目,我无法选择要更改的活动图层。图层名称是固定的,我只想通过名称来引用它们,但无论我如何搜索,我都找不到方法。

这是我访问普通文件中的图层的方式:

#target photoshop;

var fileRef = new File("I:/ps15.psd");

if (fileRef.exists) {

    app.open(fileRef); //open file

    activeDocument.activeLayer = activeDocument.artLayers.getByName("layer_1"); //find the layer with the name I want

    activeDocument.activeLayer.textItem.contents = "Hi!"; //text replacement

    app.activeDocument.close(SaveOptions.SAVECHANGES); //close file

} else { alert("File not found"); }

我找到了确定图层是否是画板的函数,但我一直无法弄清楚如何选择其中的活动图层。

javascript photoshop photoshop-script
1个回答
0
投票

我认为这段代码可以帮助你:

#target photoshop;
var fileRef = new File("I:/ps15.psd");

if (fileRef.exists) {
    app.open(fileRef);
    var layerName = "layer_1";
    var newText = "Hi!";

    var targetLayer = findLayerByNameInArtboards(activeDocument, layerName);

    if (targetLayer) {
        targetLayer.textItem.contents = newText;
        app.activeDocument.save();
        app.activeDocument.close(SaveOptions.SAVECHANGES);
    } else {
        alert("Layer not found: " + layerName);
    }
} else {
    alert("File not found");
}

function findLayerByNameInArtboards(document, layerName) {
    for (var i = 0; i < document.layerSets.length; i++) {
        var layerSet = document.layerSets[i];
        for (var j = 0; j < layerSet.artLayers.length; j++) {
            var layer = layerSet.artLayers[j];
            if (layer.name === layerName) {
                return layer;
            }
        }
    }
    return null;
}
© www.soinside.com 2019 - 2024. All rights reserved.