可通过javascript脚本、bridge联动、action变量或extendscript toolkit四种方式在photoshop中批量将文件名叠加到图片上:jsx脚本直接读取document.name并创建文字图层;bridge传递路径参数避免未保存问题;action结合“文件名(无扩展名)”变量免编码;estk支持调试与容错处理。

如果您希望在Photoshop中自动将文件名叠加显示在对应图片上,并对大量图像执行此操作,则可以通过编写并运行Photoshop脚本实现。以下是几种可行的实现方式:
一、使用JavaScript脚本(.jsx)批量处理
Photoshop原生支持JavaScript脚本,可直接访问文档名称、图层和文字工具,适合在批处理中提取当前文件名并创建文字图层。
1、打开Photoshop,选择“文件”→“脚本”→“浏览”,准备加载.jsx文件。
2、新建纯文本文件,保存为UTF-8编码,扩展名为.jsx,内容包含Document.name属性读取与TextLayer创建逻辑。
3、在脚本中获取activeDocument.name,用replace()方法去除路径和扩展名,仅保留基础文件名。
4、调用activeDocument.artLayers.add()创建新图层,再通过layer.kind = LayerKind.TEXT设置为文字图层。
5、设置文字图层的textItem.contents为提取出的文件名,并调整textItem.size、textItem.position等属性定位。
6、保存脚本后,在Photoshop中通过“文件”→“自动”→“批处理”,指定该脚本作为“播放”动作,选择源文件夹执行。
二、结合Bridge与Photoshop脚本联动
Adobe Bridge可枚举文件系统中的图像路径,再逐个启动Photoshop并传递文件名参数,避免Photoshop内部路径解析错误。
1、在Bridge中全选目标图像,右键选择“在Photoshop中打开”→“为每个文件运行脚本”。
2、编写Bridge可识别的.jsx脚本,使用BridgeTalk向Photoshop发送消息,携带File.fsName值。
3、Photoshop端接收BridgeTalk消息后,通过app.activeDocument获取当前文档,验证是否匹配传入路径。
4、确认匹配后,从传入路径中提取baseName(不含扩展名),避免依赖Document.name可能存在的未保存状态问题。
5、创建文字图层,将baseName写入textItem.contents,并设定字体为Myriad Pro Bold 24pt以确保跨系统兼容性。
6、执行完毕后,调用activeDocument.save()并关闭文档,Bridge继续推送下一个文件。
三、使用Action配合“插入变量”功能
Photoshop内置变量系统可动态读取文件元数据,无需编写代码,适合不熟悉脚本但需稳定复用的场景。
1、打开一张示例图,在“窗口”→“动作”中新建动作并开始录制。
2、选择“图层”→“新建”→“文字图层”,输入任意占位符(如XXX)。
3、停止录制,双击该动作中“新建文字图层”步骤,在弹出对话框中勾选“允许在此步骤中记录:文本替换”。
4、点击“文本替换”右侧的“变量”按钮,选择“文档信息”→“文件名(无扩展名)”。
5、在“文件”→“自动”→“批处理”中,选择该动作,源设为文件夹,目标设为“无”,覆盖选项选“不覆盖”。
6、运行后每张图将自动生成文字图层,内容为原始文件名(不含.jpg/.png等后缀),位置与字体沿用录制时设定。
四、通过ExtendScript Toolkit调试增强版脚本
使用ExtendScript Toolkit(ESTK)可实时查看Document对象结构、捕获错误并逐行调试,提升脚本鲁棒性。
1、在ESTK中新建.jsx文件,输入try...catch结构包裹主逻辑,防止单图失败中断整批任务。
2、使用decodeURI(activeDocument.fullName)安全解析含中文或空格的路径,避免乱码。
3、添加条件判断:若activeDocument.bitsPerChannel !== 8,则跳过或提示仅支持8位图像。
4、为文字图层指定图层组,命名为“FilenameOverlay”,便于后续统一修改可见性或透明度。
5、在脚本末尾加入app.refresh();语句,强制刷新界面,避免批量运行时UI滞后导致文字未渲染。
6、保存后在ESTK中点击“运行”,观察输出面板报错信息,修正路径或图层访问异常。









