从 Photoshop 图层获取图层 ID
Get layer ID from Photoshop layer
不确定我这样做是否正确。我正在尝试定位一个图层。我通常可以通过组名和图层名来做到这一点。但是,如果有重复的名称,那确实会出现问题。因此,我将尝试找到他们唯一的图层 ID。
我认为这是正确的:
var srcDoc = app.activeDocument;
var numOfLayers = srcDoc.layers.length;
// main loop
for (var i = numOfLayers -1; i >= 0 ; i--)
{
var ref = new ActionReference();
ref.putIndex( charIDToTypeID( "Lyr " ), i);
var layerDesc = executeActionGet(ref);
var layerID = layerDesc.getInteger(stringIDToTypeID('layerID'));
var currentLayer = srcDoc.layers[i].name;
alert(layerID + " " + currentLayer);
}
...只是我希望 ID 是一个更大的随机字符串,而不是一个 int。首先,我做对了吗?其次,有没有办法从 activeLayer 获取图层 ID?
ID 是 PS 中的整数,它们仅对文档是唯一的:它们总是从 1
开始,然后新层和层操作将 ID 计数器更改为 +1
,所以它是过段时间有几百个ID很正常
要获取活动层的 ID,请将引用更改为 target
:
var ref = new ActionReference();
ref.putEnumerated(charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt')); // reference is active layer
var layerDesc = executeActionGet(ref);
var layerID = layerDesc.getInteger(stringIDToTypeID('layerID'));
alert(layerID);
P.S。这将仅适用于一个活动层。对于多层,您将使用我在此处发布的函数:
P.P.S。请注意,您的原始代码不适用于组:DOM 的索引和 AM 的索引不相同。您需要遍历 AM 列表中的层以获得正确的索引。
不确定我这样做是否正确。我正在尝试定位一个图层。我通常可以通过组名和图层名来做到这一点。但是,如果有重复的名称,那确实会出现问题。因此,我将尝试找到他们唯一的图层 ID。
我认为这是正确的:
var srcDoc = app.activeDocument;
var numOfLayers = srcDoc.layers.length;
// main loop
for (var i = numOfLayers -1; i >= 0 ; i--)
{
var ref = new ActionReference();
ref.putIndex( charIDToTypeID( "Lyr " ), i);
var layerDesc = executeActionGet(ref);
var layerID = layerDesc.getInteger(stringIDToTypeID('layerID'));
var currentLayer = srcDoc.layers[i].name;
alert(layerID + " " + currentLayer);
}
...只是我希望 ID 是一个更大的随机字符串,而不是一个 int。首先,我做对了吗?其次,有没有办法从 activeLayer 获取图层 ID?
ID 是 PS 中的整数,它们仅对文档是唯一的:它们总是从 1
开始,然后新层和层操作将 ID 计数器更改为 +1
,所以它是过段时间有几百个ID很正常
要获取活动层的 ID,请将引用更改为 target
:
var ref = new ActionReference();
ref.putEnumerated(charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt')); // reference is active layer
var layerDesc = executeActionGet(ref);
var layerID = layerDesc.getInteger(stringIDToTypeID('layerID'));
alert(layerID);
P.S。这将仅适用于一个活动层。对于多层,您将使用我在此处发布的函数:
P.P.S。请注意,您的原始代码不适用于组:DOM 的索引和 AM 的索引不相同。您需要遍历 AM 列表中的层以获得正确的索引。