Photoshop如何根据TXT列表批量生成对应色值、命名的形状PNG文件
实现方案说明
这个需求完全可以通过Photoshop实现,你之前用自带变量功能找不到对应设置是正常的:Photoshop原生变量仅支持文本内容替换、像素图层替换、图层显隐控制三类操作,本身就不支持修改形状填充色属性,用JSX脚本就能完美适配你的需求。
准备工作
- 打开你的PSD模板,选中需要修改填充色的矩形形状图层,将图层重命名为
ColorRect(方便脚本精准定位,避免识别错误),保存后关闭其他无关PS文件。 - 整理你的制表符分隔TXT文件:删掉表头、
+--------+-----------+这类边框装饰,只保留每行「HEX值\t文件名」的纯数据格式,示例行如下:
003366 A1_003366 9AB0C7 B1_9AB0C7 FFFFE5 A2_FFFFE5
- 将整理好的TXT文件命名为
data.txt,和你的PSD模板放在同一个文件夹中。
脚本使用步骤
- 复制以下代码,保存为后缀为
.jsx的文件,比如命名为批量导出改色.jsx
// 批量修改形状颜色并导出PNG脚本 var doc = app.activeDocument; var docPath = doc.path.fsName; // 创建导出文件夹 var exportFolder = new Folder(docPath + "/export"); if (!exportFolder.exists) exportFolder.create(); // 读取数据文件 var dataFile = File(docPath + "/data.txt"); dataFile.open("r"); var content = dataFile.read(); dataFile.close(); // 按行拆分数据 var dataLines = content.split("\n"); // 定位目标形状图层 var targetLayer = doc.layers.getByName("ColorRect"); for (var i = 0; i < dataLines.length; i++) { var line = dataLines[i].trim(); if (line === "") continue; // 按制表符拆分HEX和文件名 var parts = line.split("\t"); if (parts.length < 2) continue; var hexColor = parts[0].trim(); var fileName = parts[1].trim(); // HEX转RGB var r = parseInt(hexColor.substring(0,2), 16); var g = parseInt(hexColor.substring(2,4), 16); var b = parseInt(hexColor.substring(4,6), 16); var newColor = new SolidColor(); newColor.rgb.red = r; newColor.rgb.green = g; newColor.rgb.blue = b; // 修改形状填充色 targetLayer.fillColor = newColor; // 导出PNG var exportFile = new File(exportFolder + "/" + fileName + ".png"); var pngOpts = new PNGSaveOptions(); pngOpts.compression = 6; pngOpts.interlaced = false; doc.saveAs(exportFile, pngOpts, true, Extension.LOWERCASE); } alert("批量处理完成,共导出" + i + "个文件");
- 回到Photoshop打开你的PSD模板,点击顶部菜单「文件 > 脚本 > 浏览」,选中刚才保存的
.jsx文件运行即可。 - 处理完成后所有PNG文件会自动保存到PSD同目录下的
export文件夹中,命名完全匹配你TXT里的名称设置。
注意事项
- 运行脚本前不要修改PSD模板内的
ColorRect图层名,如果你需要修改多个形状,对应修改脚本里的图层名称即可。 - 数据文件里的HEX值不需要加
#前缀,如果你的源数据自带#,修改脚本里HEX截取的起始位即可。 - 300条数据处理耗时大概在1-2分钟,运行过程中不要操作Photoshop避免出错。
内容的提问来源于stack exchange,提问作者user3475927
相关产品推荐
相关产品推荐

