Photoshop JS脚本:从JSON导入矢量蒙版时pathItems.add()报错
Photoshop脚本调用
pathItems.add()时出现“属性未初始化”错误 问题详情
为深度学习图像训练在Photoshop中制作了大量矢量蒙版,为节省空间删除了带标注的PS图像,仅将矢量蒙版的点位置及所属图层信息保存至JSON文件。现在需要重建标注图像用于校验和展示,但执行doc.pathItems.add(name, spiArray)时出现“属性未初始化”错误:
- 错误代码位于
utils.js的addPathItem()函数倒数第4行,调用自main.js最后一行 - 已查阅2020 Adobe脚本指南,确认
pathItems存在.add()方法 - 已验证
doc、doc.pathItems已正确初始化,name为字符串,spiArray为包含SubPathInfo对象的数组 - 可提供示例JSON和PNG文件
排查修复方向
- 检查SubPathInfo对象完整性:
每个SubPathInfo必须完整设置所有必要属性,包括closed(布尔值)、operation(路径运算类型,如PathOperation.SHAPEADD)、entireSubPath(包含PathPointInfo对象的数组),缺省或错误类型的属性会触发报错。 - 验证PathPointInfo属性合法性:
每个路径点的kind(如PointKind.CORNERPOINT)、anchor(坐标数组,如[x,y])、leftDirection、rightDirection必须全部赋值,不能存在undefined或非法数值。 - 确认文档状态:
检查目标文档doc是否为可编辑的普通PSD格式,排除智能对象、索引模式、锁定文档等不支持路径操作的情况。 - 简化测试用例:
用仅包含1个闭合路径、3个边角点的极简spiArray测试pathItems.add(),排除复杂路径数据的干扰,验证基础调用逻辑是否正常。 - 检查数组结构:
确认spiArray是直接包含SubPathInfo对象的一维数组,避免嵌套数组或其他异常结构。
内容的提问来源于stack exchange,提问作者Amy




