如何用JavaScript脚本判断Adobe Illustrator对象是否设置高斯模糊
如何在Illustrator JS脚本中判断对象是否应用了高斯模糊
嘿,我刚好对Illustrator的JavaScript脚本这块摸得透透的,给你直接上解决方案!
高斯模糊在Illustrator里是作为**效果(Effect)**存在的,所以我们要做的就是检查目标对象的effects集合,看里面有没有对应的高斯模糊效果项。
核心判断逻辑
每个可应用效果的对象(比如路径、文本框、组等,都属于PageItem类)都有一个effects属性,存储了所有应用在它身上的效果。我们只需要遍历这个集合,检查每个效果的typename是否为GaussianBlurEffect——这个类型名是跨语言版本通用的,比检查效果名称(比如“高斯模糊”)更可靠。
先写一个复用性强的判断函数:
function hasGaussianBlur(targetObj) { // 先排除无效对象或非可应用效果的对象 if (!targetObj || !(targetObj instanceof PageItem)) { return false; } // 遍历对象的所有效果 for (let i = 0; i < targetObj.effects.length; i++) { const currentEffect = targetObj.effects[i]; // 匹配高斯模糊效果类型 if (currentEffect.typename === "GaussianBlurEffect") { // 如果你需要获取模糊半径,可以用 currentEffect.radius // console.log("模糊半径:" + currentEffect.radius + "px"); return true; } } return false; }
结合你的遍历逻辑使用
既然你已经会遍历图层和对象,直接把这个函数嵌进去就行。比如遍历当前文档的所有图层和对象,筛选出带高斯模糊的对象:
const activeDoc = app.activeDocument; // 遍历所有图层 for (let layerIdx = 0; layerIdx < activeDoc.layers.length; layerIdx++) { const currentLayer = activeDoc.layers[layerIdx]; // 遍历图层内的所有页面项 for (let itemIdx = 0; itemIdx < currentLayer.pageItems.length; itemIdx++) { const currentItem = currentLayer.pageItems[itemIdx]; // 判断当前对象是否带有高斯模糊 if (hasGaussianBlur(currentItem)) { // 这里执行你需要的部分任务 console.log(`找到带高斯模糊的对象:${currentItem.name || "未命名对象"}`); // 比如你可以在这里调用你的任务脚本逻辑 // doYourSpecificTask(currentItem); } // 额外处理:如果是组对象,递归检查组内的子对象 if (currentItem instanceof GroupItem) { checkGroupItems(currentItem); } } } // 递归检查组内对象的辅助函数 function checkGroupItems(group) { for (let subIdx = 0; subIdx < group.pageItems.length; subIdx++) { const subItem = group.pageItems[subIdx]; if (hasGaussianBlur(subItem)) { console.log(`组内找到带高斯模糊的对象:${subItem.name || "未命名对象"}`); // doYourSpecificTask(subItem); } // 如果子对象还是组,继续递归 if (subItem instanceof GroupItem) { checkGroupItems(subItem); } } }
一些注意事项
- 组对象本身可能没有高斯模糊,但组内的子对象可能有,所以一定要加递归遍历组的逻辑(上面的代码已经包含了)
- 如果需要处理锁定/隐藏的对象,可以先临时修改
currentItem.locked = false或currentLayer.visible = true,处理完记得恢复原状态 - 文本框架、复合路径、形状等都属于
PageItem,所以这个判断逻辑能覆盖绝大多数场景
内容的提问来源于stack exchange,提问作者Mearg
相关产品推荐
相关产品推荐

