gpt4 book ai didi

javascript - 如何编写 Photoshop JavaScript 脚本以将 PSD 文件中的所有图层复制到新文档中?

转载 作者:行者123 更新时间:2023-11-29 22:06:19 25 4
gpt4 key购买 nike

我正在尝试使用以下 Photoshop CC JavaScript 脚本获取 PSD 文件中的所有图层,并将它们另存为单独的文件:

var file = new File('path/to/file.psd'),
docRef = open(file),
i,
len,
duplicateLayer,
dimens,
newDoc,
newLayer;

for (var i = 0, len = docRef.artLayers.length; i < len; i += 1) {
duplicateLayer = docRef.artLayers[i].duplicate();
//duplicateLayer.(RasterizeType.ENTIRELAYER);
duplicateLayer.copy();
dimens = duplicateLayer.bounds;

newDoc = documents.add(dimens[2] - dimens[0], dimens[3] - dimens[1], 300,
'exportedLayer' + i, NewDocumentMode.RGB,
DocumentFill.TRANSPARENT);
newLayer = newDoc.artLayers.add();
newDoc.paste();
}

不幸的是,它不起作用。我遇到了各种各样的错误,主要是关于如何只能从最前面的文档复制图层。这是什么意思?

我很抱歉,但在 Photoshop 方面我完全是个初学者,所以如果您能帮助我如何使上述脚本执行我想要的操作,我们将不胜感激。

非常感谢大家

最佳答案

var file = new File('path/to/file.psd'),
docRef = open(file),
i,
len,
duplicateLayer,
dimens,
newDoc,
newLayer,
layers = [];

for (var i = 0, len = docRef.artLayers.length; i < len; i += 1) {
layers[i] = docRef.artLayers[i];
}
for (var i = 0, len = layers.length; i < len; i += 1) {
app.activeDocument = docRef;
duplicateLayer = layers[i].duplicate();
duplicateLayer.rasterize(RasterizeType.ENTIRELAYER);
dimens = duplicateLayer.bounds;
duplicateLayer.cut();

newDoc = documents.add(dimens[2] - dimens[0], dimens[3] - dimens[1], 300,
'exportedLayer' + i, NewDocumentMode.RGB,
DocumentFill.TRANSPARENT);
newLayer = newDoc.artLayers.add();
app.activeDocument = newDoc;
newDoc.paste();
}

首先,请注意,我为我创建的每个图层都将焦点设置到您的原始文档。其次,我保留了对所有层的引用,因为玩弄新层可能会扰乱您在原始层中的循环。第三,我使用剪切而不是复制来删除新添加的图层。还有……瞧。

关于javascript - 如何编写 Photoshop JavaScript 脚本以将 PSD 文件中的所有图层复制到新文档中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20792057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com