公司里有人有个需求说可以再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里面有个 文件 然后下面选脚本
本文介绍如何使用Photoshop内置的JavaScript API编写脚本,实现根据图层名称显示特定图层并隐藏其他图层的功能。通过遍历`activeDocument.layers`和`layers.sublayers`,设置图层的`visible`属性来控制图层的可见性。由于`activelayer`限制只能选择一个图层,因此未在脚本中使用。
1万+

被折叠的 条评论
为什么被折叠?



