Photoshop中如何获取Art Layer的标签颜色属性?
Photoshop 原生 ArtLayer 接口未公开图层标签颜色的直接读取属性,你可以通过 ActionManager 的 executeActionGet 方法读取该属性,实现逻辑和你用到的设置操作对应,具体实现代码如下:
// 读取当前选中图层的标签颜色 function getLayerLabelColor() { var ref = new ActionReference(); // 定位到当前选中的图层 ref.putEnumerated(charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt")); var layerDesc = executeActionGet(ref); // 读取标签颜色枚举值 var colorEnum = layerDesc.getEnumerationValue(charIDToTypeID("Clr ")); // 枚举值和颜色的映射关系 var colorMap = { [charIDToTypeID("None")]: "无颜色", [charIDToTypeID("Rd ")]: "红色", [charIDToTypeID("Orng")]: "橙色", [charIDToTypeID("Ylw ")]: "黄色", [charIDToTypeID("Grn ")]: "绿色", [charIDToTypeID("Bl ")]: "蓝色", [charIDToTypeID("Vlt ")]: "紫色", [charIDToTypeID("Gry ")]: "灰色" }; return colorMap[colorEnum] || "未知"; }
使用示例
// 初始读取保存无颜色状态 var originColor = getLayerLabelColor(); // 后续需要检测时调用 var currentColor = getLayerLabelColor(); if (originColor === "无颜色" && (currentColor === "红色" || currentColor === "橙色")) { // 符合从无颜色变更为红色/橙色的逻辑 alert("图层标签颜色已变更为红色/橙色"); }
补充说明
- 如果你需要读取非选中状态的指定图层,只需修改
ActionReference的定位规则即可,比如通过图层ID定位:ref.putIdentifier(charIDToTypeID("Lyr "), 目标图层ID) - 所有标签颜色的枚举值映射是Photoshop固定的规则,覆盖了所有支持的标签颜色类型
内容的提问来源于stack exchange,提问作者Ghoul Fool
相关产品推荐
相关产品推荐

