You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:40:26