简体   繁体   English

Photoshop脚本删除所有文本层

[英]Photoshop script remove all text layer

I have got too many file to work on, so I try to remove all text layer with a *.jsx script file in Adobe Photoshop CC 2014 on Windows 7 pro x64. 我有太多文件要处理,因此我尝试在Windows 7 pro x64上的Adobe Photoshop CC 2014中使用*.jsx脚本文件删除所有文本层。

I find this part of code on internet and when I edit I got the error. 我在互联网上找到了这部分代码,当我编辑时出现了错误。

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

Can you help me. 你能帮助我吗。

The code you posted doesn't look really clean and it's kind of hard to tell what's wrong. 您发布的代码看起来并不干净,很难分辨出什么地方。

Here is a pretty straightforward way of doing it instead (tested with Photoshop CS6 on Win 10 x64): 相反,这是一种非常简单的方法(在Win 10 x64上使用Photoshop CS6测试):

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM