我试图使用以下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/