我正在编写一个脚本来检查我的图像。 这是我需要检查的内容:
#target photoshop
var doc = app.activeDocument;
var pLen = doc.pathItems.length;
var pArray = [];
var nLen = doc.layers.length;
var cArray = [];
if (nLen != 3)
{alert ("Wrong structure")}
else if (pLen != 2 )
{alert ("Wrong path item")}
else {for (var i=0; i<nLen; i++)
{if (doc.layer[i].getByName ("Freisteller") == false || doc.layer[i].getByName ("Hintergrund") == false || doc.layer[i].getByName ("Hintergrund BR") == false )
{alert ("Wrong layer name")}
}
}
我也尝试过这个,但它不起作用
#target photoshop
var doc = app.activeDocument;
var pLen = doc.pathItems.length;
var pArray = [];
var nLen = doc.layers.length;
var cArray = [];
var layerName = ["Freisteller", "Hintergrund", "Hintergrund BR"];
if (nLen != 3)
{alert ("Wrong structure")}
else if (pLen != 2)
{alert ("Wrong path item")}
else {for (var i=0; i<nLen; i++)
{if (doc.layer[i].getByName ("Freisteller") != layerName || doc.layer[i].getByName ("Hintergrund") != layerName || doc.layer[i].getByName ("Hintergrund BR") != layerName )
{alert ("Wrong layer name")}
}
}
请帮我修复它
您需要寻找
typename == "ArtLayer"
来表示正常、标准的艺术图层,以及 layer.kind == "LayerKind.SMARTOBJECT"
表示智能对象。对于背景层,layer.isBackgroundLayer == true 。
你的脚本不起作用,因为“getbyname”并不完全是它所说的那样。
doc.activeLayer = doc.artLayers.getByName("Freisteller");
将获得名为“Freisteller”的图层(如果存在)。此外,如果有多个层被调用,它会抓住第一个。你试图从 i 层“获取”它。
这是您的脚本,有一些更改。
#target photoshop
var doc = app.activeDocument;
var pLen = doc.pathItems.length;
var pArray = [];
var nLen = doc.layers.length;
var cArray = [];
var layerName = ["Freisteller", "Hintergrund", "Hintergrund BR"];
if (nLen != 3)
{
alert ("Wrong structure\n" + nLen + " layers in file.");
}
else if (pLen != 2)
{
alert ("Wrong path item");
}
else
{
for (var i = nLen -1; i >= 0; i--)
{
//if (doc.layer[i].getByName ("Freisteller") != layerName || doc.layer[i].getByName ("Hintergrund") != layerName || doc.layer[i].getByName ("Hintergrund BR") != layerName )
var n = doc.layers[i].name;
if (n == "Freisteller" || n == "Hintergrund" || n == "Hintergrund BR")
{
// all good
// alert(n);
}
else alert ("Wrong layer name");
}
}
另外,我认为这可能会对您有所帮助。
// call the source document
var srcDoc = app.activeDocument;
var numOfLayers = srcDoc.layers.length;
// main loop
for (var i = numOfLayers -1; i >= 0; i--)
{
var thisLayer = srcDoc.layers[i];
srcDoc.activeLayer = thisLayer;
var k = what_type(thisLayer);
alert(thisLayer.name + "\nis a " + k);
}
function what_type(alayer)
{
if (alayer.isBackgroundLayer == true) return "background layer";
var lk = alayer.kind;
if (lk == "LayerKind.SMARTOBJECT") return "smart object";
else if (lk == "LayerKind.TEXT") return "text layer";
if (alayer.typename == "ArtLayer") return "normal art layer";
else return undefined;
}