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

ExtendScript实现AI墨水效果:路径空白被填充的问题排查

问题分析与解决方案

核心问题点

  1. 缺失手动流程的关键步骤:代码完全跳过了「扩展选中对象(扩展外观)」和「转换为复合形状」的操作,这两步是保留路径镂空结构的核心,直接导致栅格化时空白区域被填充。
  2. Selection引用逻辑错误:执行group命令后,文档选中对象已变为新组,但代码仍使用原选中对象集合循环添加模糊效果,导致模糊应用在单个对象而非整体组上,破坏了复合路径的镂空关系。
  3. 栅格化对象不匹配:栅格化的是组对象,但模糊效果并未应用在组上,导致栅格化后的图像丢失镂空信息,最终描摹时空白区域被填充。

修正后的代码

function mainFunction(){
    var doc = app.activeDocument;
    var originalSelection = doc.selection;
    
    if (originalSelection.length === 0) return;

    // 1. 扩展选中对象的外观(对应手动步骤的「扩展选中对象」)
    app.executeMenuCommand('expandStyle');
    
    // 2. 转换为复合形状(保留镂空结构)
    app.executeMenuCommand('makeCompoundShape');
    
    // 3. 组合对象并应用高斯模糊
    app.executeMenuCommand('group');
    var targetGroup = doc.selection[0]; // 获取新生成的组
    var blurXml = '<LiveEffect name="Adobe PSL Gaussian Blur"><Dict data="R blur '+ 20 +'"/></LiveEffect>';
    targetGroup.applyEffect(blurXml);
    
    // 4. 栅格化组对象
    var rasterized = doc.rasterize(targetGroup);
    rasterized.selected = true;

    // 5. 图像描摹并设置参数
    var tracingItem = rasterized.trace();
    var tracingOpts = tracingItem.tracing.tracingOptions;
    
    tracingOpts.tracingMode = TracingModeType.TRACINGMODEBLACKANDWHITE;
    tracingOpts.ignoreWhite = true;
    tracingOpts.fills = true;
    tracingOpts.maxColors = 2;
    tracingOpts.threshold = 142;
    tracingOpts.pathFitting = 10;
    
    app.redraw();
    tracingItem.tracing.expandTracing();    
}

关键修正说明

  • 补充了expandStyle(扩展外观)和makeCompoundShape(转换为复合形状)的菜单命令,还原手动流程的核心步骤,确保镂空结构被保留。
  • 调整了Selection的引用逻辑,group后直接获取新生成的组对象,将模糊效果应用在组上,保证整体效果的一致性。
  • 统一了栅格化的目标对象为已应用模糊的组,确保描摹的源图像包含正确的镂空模糊效果。

内容的提问来源于stack exchange,提问作者Elina

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:02:02