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

使用PSD.js转Photoshop路径为SVG时,如何获取各路径运算类型?

问题:PSD.js转换Photoshop路径到SVG时的路径运算类型获取问题

我正在尝试使用PSD.js将Photoshop路径转换为SVG。通过PSD.js可获取图层的蒙版数据,进而提取形状图层的路径数据,该数据为JavaScript数组,符合Photoshop文件格式规范。对于无孔洞的简单形状,转换为SVG路径字符串并渲染的流程正常。

但Photoshop允许将多个路径组合为一个形状,且每个路径可指定以下运算类型:

  • Unite - 合并路径
  • Subtract - 路径相减(创建孔洞)
  • Exclude - 移除两路径重叠区域并保留其余部分
  • Intersect - 仅保留两路径重叠区域

这类带运算的路径产生的孔洞无法仅通过SVG缠绕规则(non-zero或even-odd)处理:例如Subtract运算无论路径方向如何都会创建孔洞,而SVG仅当孔洞路径与外部路径方向相反时才会识别为孔洞;Unite运算也不受SVG缠绕规则影响。我希望提取各路径的运算类型,以此构建无需依赖SVG缠绕规则即可正确渲染孔洞的路径。现询问:是否可通过PSD.js获取形状中每个路径的运算类型?

我曾尝试用SVG缠绕规则绘制孔洞,但因孔洞路径与外部路径方向相同,未被识别为孔洞(在Photoshop中显示为孔洞,但SVG渲染时没有孔洞效果)。


回答

可以通过PSD.js获取形状中每个路径的运算类型。

在PSD.js解析后的形状图层蒙版数据里,每个路径对象会包含对应运算类型的属性,该属性对应Photoshop文件格式中定义的路径运算标记。你可以在遍历路径数据时,查看路径项的operation或类似命名的字段(具体可查看PSD.js的源码或调试解析后的数据结构),其值会对应Unite、Subtract、Exclude、Intersect这几种运算类型。

拿到运算类型后,你可以针对性处理SVG路径:

  • 针对Subtract类型的路径,主动反转其路径方向,让SVG的缠绕规则能正确识别为孔洞;
  • 针对Unite类型的路径,直接合并原有路径即可;
  • 针对Exclude和Intersect类型,可以通过组合路径方向,或者配合SVG的<clipPath>、<mask>元素来实现对应的形状组合效果,从而精准还原Photoshop中的原始形状逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:58:23