javascript - 如何使用 JavaScript 在 Photoshop 中查找空组/文件夹?
问题描述
我正在编写一个 Photoshop 脚本来对几个自定义图层组进行一些处理。在我的情况下,我可能需要忽略一些空组。
所以我想使用脚本来查找空组,我该如何实现呢?
我在想的是获取每个 layerSets 并检查它的长度。如果它等于 0 则为空。但是 layerSets 的“长度”似乎不适用于此。
那么我应该使用哪个属性?或者有什么更好的方法?
谢谢
解决方案
我不会尝试使用 DOM 找到那些,因为它在遍历层方面有很多限制......
在 AM 代码中,我会这样做:因为组实际上是两个独立的实体,所以我将遍历所有层并检查何时layerSectionStart
和layerSectionEnd
(类型7
和13
)相互跟随。
(function()
{
var myLayers = getAll(),
emptyGroups = "";
for (var i = 0; i < myLayers.length; i++)
{
myLayers[i].isEmpty && emptyGroups += "name: " + myLayers[i].name + "; index: " + myLayers[i].index + "\n";
}
alert(emptyGroups == "" ? "No empty groups found" : emptyGroups);
function getAll()
{
var lyrs = [],
prevType = -1,
thisType = -1;
try
{
activeDocument.backgroundLayer;
var layers = 0
}
catch (e)
{
var layers = 1;
};
while (true)
{
ref = new ActionReference();
ref.putIndex(charIDToTypeID('Lyr '), layers);
try
{
var desc = executeActionGet(ref);
}
catch (err)
{
break;
}
thisType = desc.getInteger(stringIDToTypeID("layerKind"));
var lyr = {
name: desc.getString(charIDToTypeID("Nm ")),
index: layers,
type: thisType, //7 is start of the group. 13 is end of the group
isEmpty: (thisType == 7 && prevType == 13) ? true : false,
};
prevType = thisType
lyrs.push(lyr)
layers++;
}
return lyrs
}
})()
结果:
推荐阅读
- django - django db 设置到一个带有解耦的 .env 文件中
- html - 为什么在内容中添加图像时 justify-content:center 不起作用?
- swift - 使用实例成员作为默认参数的 Swift 替代方法
- java - org.springframework.web.client.HttpClientErrorException:RestTemplate 中的 400 错误请求
- scala - Databricks 中的高并发集群
- mysql - 如何水平连接两个不同的表(没有交叉连接)
- google-chrome-devtools - Nativescript-Vue 7 - 创建新项目后,我在 google chrome devtools 中看不到网络活动
- python - GeoPandas 在使用 to_file 时不保存完整的几何图形
- c# - 如何通过存储过程将 GUID 参数传递给 SQL Server?
- c# - wpf中的货币格式