Photoshop脚本修改纯色图层为随机色报错,求修正及PNG导出实现
修正后的Photoshop脚本及功能实现
问题分析
错误1320 Invalid enumeration value是因为你使用了不存在的LayerKind.COLOR枚举值——Photoshop JavaScript API中,纯色填充图层的正确枚举是LayerKind.SOLIDFILL。此外,代码中多余的adjustColorBalance调用无需保留,fill()方法已能直接覆盖图层颜色。
修正后的完整代码
var originalRulerUnits = app.preferences.rulerUnits; app.preferences.rulerUnits = Units.PIXELS; var activeDocument = app.activeDocument; var colorLayers = []; // 生成随机RGB颜色 var randomColor = function() { var color = new SolidColor(); color.rgb.red = Math.floor(Math.random() * 256); color.rgb.green = Math.floor(Math.random() * 256); color.rgb.blue = Math.floor(Math.random() * 256); return color; } // 筛选纯色填充图层(若需包含普通像素图层可保留 || layer.kind === LayerKind.NORMAL) for (var i = 0; i < activeDocument.layers.length; i++) { var layer = activeDocument.layers[i]; // 修正枚举值:纯色填充图层使用LayerKind.SOLIDFILL if (layer.kind === LayerKind.SOLIDFILL) { colorLayers.push(layer); } } // 为选中的图层设置随机颜色 for (var i = 0; i < colorLayers.length; i++) { colorLayers[i].fill(randomColor()); } // PNG导出功能 var exportPath = activeDocument.path + "/" + activeDocument.name.replace(/\.[^\.]+$/, "") + "_randomized.png"; var exportOptions = new ExportOptionsSaveForWeb(); exportOptions.format = SaveDocumentType.PNG; exportOptions.PNG8 = false; // 使用PNG-24格式 exportOptions.transparency = true; // 保留图层透明度 exportOptions.interlaced = false; activeDocument.exportDocument(new File(exportPath), ExportType.SAVEFORWEB, exportOptions); app.preferences.rulerUnits = originalRulerUnits;
关键说明
- 图层筛选修正:仅保留
LayerKind.SOLIDFILL确保只处理纯色填充图层,若需要同时修改普通像素图层,可恢复|| layer.kind === LayerKind.NORMAL判断。 - PNG导出配置:
- 导出路径基于原文件路径,自动添加
_randomized后缀避免覆盖原文件 - 使用PNG-24格式并保留透明度,可根据需求调整
PNG8、transparency等参数 - 通过
SaveForWeb方式导出,保证PNG格式的兼容性
- 导出路径基于原文件路径,自动添加
内容的提问来源于stack exchange,提问作者Tyler
相关产品推荐
相关产品推荐

