自己写的一个Photoshop的script,用javascript

本文介绍如何使用Photoshop内置的JavaScript API编写脚本,实现根据图层名称显示特定图层并隐藏其他图层的功能。通过遍历`activeDocument.layers`和`layers.sublayers`,设置图层的`visible`属性来控制图层的可见性。由于`activelayer`限制只能选择一个图层,因此未在脚本中使用。

公司里有人有个需求说可以再photoshop里面显示特定的layer,用特定的名字,比如一个layer叫张三,那么把layer为张三的都显示出来,其他的隐藏掉,以前有个人用python写的东西,后来查了一下才知道photoshop内部自带script功能,所以用了半天时间看了document,在photoshop javascript API里面,然后写出来了这个

var docRef = app.activeDocument;  
var layers = docRef.layers;  
//var myLayer = layers["组5"]; //this defines the layer that you want to get the selection from  
  
//var myLayer = app.activeDocument.layers["组5"];
//var exLayer= app.activeDocument.layers['导出组'];
var layerSum=app.activeDocument.layerSets;

alert("开始执行");

//alert(myLayer.layers);


docRef.selection = null;//这句是让你没有选中任何图层

var item={};

var a="";

var theLayer={};



for (var i=0;i<layerSum.length;i++){

 layerSum[i].visible=false;

          theName=layerSum[i].name;

          theLayer=app.activeDocument.layers[theName];

          for (var lol=0;lol<theLayer.layers.length;lol++){
               theLayer.layers[lol].visible=false;
          }

          for (var k=0;k<theLayer.layers.length;k++){

               if(theLayer.layers[k].name=="张三"){

                         theLayer.layers[k].visible=true;
                         layerSum[i].visible=true;

               }

}
}






/* for (var key=0;key<app.activeDocument.layers.length;key++){
     for (var i=0;i<app.activeDocument.layers[key].length;i++){

           

          if (pp.activeDocument.layers[key].layers[i].name=="图层"){  //   alert(myLayer.layers[i].name=="图层");
        //  alert(myLayer.layers[i].name);
        // alert(myLayer.layers[i]);
  
    
        pp.activeDocument.layers[key].layers.duplicate(exLayer);

     }



}


} */
/* for (var i=0;i<myLayer.layers.length;i++){

           

          if (myLayer.layers[i].name=="图层"){  //   alert(myLayer.layers[i].name=="图层");
        //  alert(myLayer.layers[i].name);
        // alert(myLayer.layers[i]);
        item[i]=myLayer.layers[i];
     

    
        myLayer.layers[i].duplicate(exLayer);
        alert(item);
     }



} */
/* var a={what:4};

app.activeDocument.activeLayer=a;
 */

activeDocument.layers 是最外层layers的集合,layers里面还有sublayers,也就是第二层,这个也是.layers 出来的.

而.visible就是true的时候显示,false的时候不显示,接下来就是循环了,当名字相匹配的时候显示,其他的一律不显示.

 

另外还有一个 activelayer,虽然我后来没有用,他是这样的,有个缺陷,只能选中一条Layer,不能多选,所以后面注释掉了

 

加载script的时候在photoshop里面有个 文件 然后下面选脚本

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值