Javascript Photoshop脚本删除所有文本层
我有太多的文件要处理,所以我尝试在Windows 7 pro x64上使用Adobe Photoshop CC 2014中的Javascript Photoshop脚本删除所有文本层,javascript,vbscript,applescript,photoshop,Javascript,Vbscript,Applescript,Photoshop,我有太多的文件要处理,所以我尝试在Windows 7 pro x64上使用Adobe Photoshop CC 2014中的*.jsx脚本文件删除所有文本层 我在互联网上找到这部分代码,当我编辑时,我得到了错误 // test 1 #target photoshop var myLayers = app.activeDocument.layers.everyItem().getElements(); for(var i=myLayers.length-1;i=0;i--){
*.jsx
脚本文件删除所有文本层
我在互联网上找到这部分代码,当我编辑时,我得到了错误
// test 1
#target photoshop
var myLayers = app.activeDocument.layers.everyItem().getElements();
for(var i=myLayers.length-1;i=0;i--){
if(myLayers[i].LayerKind.TEXT){
myLayers[i].remove();
continue;
}
}
// test 2
var theLayers = collectEmptyGroups(app.activeDocument, []);
//alert (theLayers.join("\n"));
for (var x = 0; x < theLayers.length; x++) {
try {theLayers[x].remove()}
catch (e) {}};
////// function collect all layers //////
function collectEmptyGroups (theParent, allLayers) {
if (!allLayers) {var allLayers = new Array}
else {};
var theNumber = theParent.layers.length - 1;
for (var m = theNumber; m >= 0;m--) {
var theLayer = theParent.layers[m];
// apply the function to layersets;
if (theLayer.typename == LayerKind.TEXT) {
// allLayers.push(theLayer)
}
else {
allLayers = (collectEmptyGroups(theLayer, allLayers))
// this line includes the empty layer groups;
if (theLayer.layers.length == 0) {allLayers.push(theLayer)}
}
};
return allLayers
};
//测试1
#目标photoshop
var myLayers=app.activeDocument.layers.everyItem().getElements();
对于(var i=myLayers.length-1;i=0;i--){
if(myLayers[i].LayerKind.TEXT){
myLayers[i].remove();
继续;
}
}
//测试2
var theLayers=collectEmptyGroup(app.activeDocument,[]);
//警报(layers.join(“\n”);
对于(var x=0;x=0;m--){
var theLayer=父层[m];
//将该函数应用于LayerSet;
如果(theLayer.typename==LayerKind.TEXT){
//所有层。推(层)
}
否则{
allLayers=(CollectEmptyGroup(层,所有层))
//该行包括空层组;
如果(theLayer.layers.length==0){allLayers.push(theLayer)}
}
};
返回所有层
};
你能帮帮我吗。你发布的代码看起来不太干净,很难判断出是什么问题 以下是一种非常简单的方法(在Win 10 x64上使用Photoshop CS6进行测试):
函数findLayersText(层){
对于(var i=0,len=layers.length;i0){
browseLayerSets(集合[i].层集合);
}
}
}
//检查文本层的所有根艺术层
FindLayerText(app.activeDocument.artLayers);
//浏览所有根图层集(如果有)
browseLayerSets(app.activeDocument.layerSets);
你发布的代码看起来并不干净,很难判断出是什么问题
以下是一种非常简单的方法(在Win 10 x64上使用Photoshop CS6进行测试):
函数findLayersText(层){
对于(var i=0,len=layers.length;i0){
browseLayerSets(集合[i].层集合);
}
}
}
//检查文本层的所有根艺术层
FindLayerText(app.activeDocument.artLayers);
//浏览所有根图层集(如果有)
browseLayerSets(app.activeDocument.layerSets);
你知道你在做什么吗?你知道你在做什么吗?我真的很感谢你的帮助,我在这类脚本中的级别很低,在win64和photoshopCC2014i上运行得很好。我真的很感谢你的帮助,我在这类脚本中的级别很低,在win64和photoshopCC2014上运行得很好
function findLayersText (layers) {
for (var i = 0, len = layers.length; i < len; i++) {
if (layers[i].kind == "LayerKind.TEXT") {
layers[i].remove();
len--;
}
}
}
//check all art layers then
//check if there are any inner layer sets
function browseLayerSets (sets) {
for (var i = 0, len = sets.length; i < len; i++) {
findLayersText(sets[i].artLayers);
if(sets[i].layerSets.length > 0){
browseLayerSets(sets[i].layerSets);
}
}
}
//check all root art layers for text layer
findLayersText(app.activeDocument.artLayers);
//browse all root layer sets (if any)
browseLayerSets(app.activeDocument.layerSets);