Photoshop脚本教程
Photoshop ExtendScript 是 Adobe 对 ECMAScript 3(ES3)标准的实现,用于控制 Photoshop 自动化操作。脚本文件后缀为 .jsx,由 Photoshop 内置的 ExtendScript 引擎解析执行。
ExtendScript 是什么
ExtendScript 是 Adobe 全系软件的脚本平台,Photoshop、Illustrator、InDesign 等均使用同一引擎。它基于 ECMAScript 3,运行在 Adobe 自有的 ExtendScript 引擎上,而不是浏览器或 Node.js 环境。
核心特征:
- 语法 — ES3 标准。使用
var声明变量,不支持let/const、箭头函数、模板字符串、class、Promise - 全局根对象 —
app是 Photoshop 应用程序的根对象,无需导入或 require,直接可用 - 同步执行 — 所有 API 都是同步调用,没有 async/await,没有回调地狱
- 文件后缀 —
.jsx
入口对象
所有脚本的起点都是全局的 app 对象:
// 无需任何 import 或 require,app 直接可用
var doc = app.activeDocument;
alert(doc.name); app 代表 Photoshop 应用程序本身,通过它可以访问打开的文档、首选项、工具、颜色设置等。
能做什么
Photoshop ExtendScript 几乎可以实现所有的 Photoshop 手动操作:
- 文件操作 — 批量打开、保存 PSD、导出为 PNG/JPEG/GIF
- 图层管理 — 创建、删除、分组、排序、合并图层与图层组
- 文本处理 — 添加文本、设置字体/字号/颜色、批量替换文字
- 选区与路径 — 创建选区、填充描边、操作矢量路径
- 颜色调整 — 应用调整图层、色阶、曲线、色彩平衡
- 动作与批处理 — 调用已录制的动作、批量处理整个文件夹
- 模块化脚本 — 使用
#include指令组织大型项目,按文件拆分功能模块 - 导出自动化 — 保存为 Web 所用格式、切片导出、调整尺寸后导出
第一个脚本
以下脚本创建一个新文档,添加文本图层,并保存为 PNG:
var doc = app.documents.add(800, 600, 72, "我的脚本文档", NewDocumentMode.RGB);
var textLayer = doc.artLayers.add();
textLayer.kind = LayerKind.TEXT;
textLayer.textItem.contents = "你好,ExtendScript!";
textLayer.textItem.size = 48;
textLayer.textItem.position = [100, 300];
var pngFile = new File("C:/Users/Administrator/Desktop/输出.png");
var sfwOpts = new ExportOptionsSaveForWeb();
sfwOpts.format = SaveDocumentType.PNG;
sfwOpts.PNG8 = false;
sfwOpts.transparency = true;
doc.exportDocument(pngFile, ExportType.SAVEFORWEB, sfwOpts);
doc.close(SaveOptions.DONOTSAVECHANGES); 将该代码保存为 .jsx 文件,在 Photoshop 中通过 文件 > 脚本 > 浏览 打开即可运行。
参考资源
- Adobe Photoshop CC JavaScript Reference(2015)— 官方 API 参考手册
- ExtendScript Toolkit(ESTK)— Adobe 提供的脚本开发和调试工具,随 Creative Suite 安装
- Photoshop 脚本指南 — 随 Photoshop 安装的 PDF 文档,位于
Photoshop/Presets/Scripts/目录
路径格式说明
本教程使用 C:/Users/Administrator/Desktop/ 格式表示文件路径(Windows 风格)。ExtendScript 在 Windows 上也接受此格式。
如果你使用其他操作系统或路径不同,请相应替换:
- Windows:
C:/Users/Administrator/Desktop/file.jsx - macOS:
~/Desktop/file.jsx(~表示用户主目录) - 跨平台:
~/Desktop/file.jsx(ExtendScript 在 Windows 也支持~)
注意事项
ExtendScript 是一个 同步、单线程 的环境。脚本执行期间 Photoshop 界面会冻结,因此长时间操作建议配合进度条(app.doProgress)或拆分为多个脚本。由于基于 ES3,开发时需要注意变量提升、函数作用域等老旧 JavaScript 特性。对于大型脚本,使用 #include 指令将代码拆分到多个文件中,有助于保持项目结构清晰。