跳到主要内容

Photoshop 软件连接

通过 Bridge,Quicker 可以调用 Photoshop 中的文档与图层、选择与图像处理、文件导出、UXP JavaScript等能力。完整安装过程见安装与管理,本页说明该软件的差异。

适用范围

25.0 及以上;已有 2026(27.1)真机记录。面向 Windows x64。支持范围不等于所有小版本均已真机测试;实际可安装的版本组合以设置页检测与选择结果为准。

安装前准备与首次启用

安装机制:Adobe UPIA 管理的 UXP 插件

退出 Photoshop,确认 Adobe Creative Cloud 提供的 UPIA 可用,再通过设置页软件卡片安装。生产使用无需 UXP Developer Tool。

2.2.7 起,可在设置中手动选择并记住 Photoshop 程序路径;安装 Adobe 连接组件前,Quicker 会检查所需依赖并在缺少时提示修复方法。

启动 Photoshop,从“增效工具”打开 Quicker Bridge Status 状态面板,确认连接;保持插件容器正常运行。

确认连接

安装并重启后,打开 Quicker 设置 → 软件连接 → Photoshop,确认出现在线实例。打开命令工具并选择实例,用空对象 {} 调用 bridge.ping。成功响应及 pong: true 表明本次会话可调用;版本与当前文档摘要以实际结果为准。

宿主没有打开文档时,部分业务命令可能不可用;先测试连接,再测试文档命令。详细步骤见连接状态与命令工具

创建动作

使用Photoshop控制,或在命令工具选择命令、填写参数后点击 生成动作,粘贴到 Quicker 面板。模块页提供只读的最小连接示例。

触发时对应软件必须位于前台,然后要求只有一个在线 Bridge 会话。这里检查前台软件类型,但不按前台进程精确选会话;多个在线会话时会拒绝执行。

动作不保存工具窗口选择的临时 session。请阅读立即调用与动作目标的区别,再配置快捷键、面板或轮盘触发。

JavaScript 与 JSX:选择正确的执行方式

Photoshop 有两套不同的 JavaScript 运行环境。Bridge 的“执行任意 JavaScript”指 UXP JavaScript,不是传统 JSX(ExtendScript)。把 .jsx 改名为 .js.psjs 不会自动转换脚本。

对比项Photoshop Bridge:UXP JavaScriptAdobe系列软件控制:JSX / ExtendScript
Quicker 入口Photoshop控制 → [脚本] 执行任意 JavaScriptAdobe系列软件控制 → Photoshop → 执行js脚本 / 执行js脚本文件
执行通道Photoshop 内的 UXP Bridge 插件Windows 低权限代理调用 Photoshop COM,不需要 Bridge
输入内容UXP 代码文本;不是 .psjs 文件路径ExtendScript 代码,或 .jsx / .js 文件路径
Photoshop 对象require("photoshop");当前 Bridge 也预置 photoshopappactioncoreuxp全局 appUnitValueResampleMethod 等旧脚本对象
读取像素宽高doc.widthdoc.height,直接得到数值doc.width.as("px")doc.height.as("px")
修改文档通常需要 core.executeAsModal(),异步 API 使用 await使用 ExtendScript 的同步 API,无需 UXP 模态包装
语法支持现代 JavaScript、Promise、async/await;不支持 #targetUnitValue 等 ExtendScript 写法使用旧版 JavaScript 语法;不要直接使用 UXP 的 require("photoshop")、async/await
返回结果Bridge 等待脚本求值产生的 Promise,结果转换为 JSON 文本开启“等待执行结束”后接收简单类型的脚本输出;不是 Bridge JSON 结果

已有 JSX 怎么运行

在“Adobe系列软件控制”中选择 Photoshop,然后:

  • 执行js脚本:把原始 JSX 放入“脚本内容”。
  • 执行js脚本文件:把已有 .jsx 文件的完整路径放入“脚本文件路径”。

先启动 Photoshop。该方式复用已有 COM 接口,不按 Bridge 会话选择目标,多版本或多实例请参阅该模块的限制。如果需要结果,开启“等待执行结束”;接口失败后的 EXE 兼容方式不能确认脚本成败,也不能等待其完成。

Bridge 当前没有单独的 JSX 执行命令,不会把输入自动转交给 ExtendScript。无需为了运行已有 JSX 安装或修改 Bridge。Adobe 开发者论坛对 UXP 内通过 BatchPlay 间接启动 JSX 的做法提示了兼容性和分发风险,因此不把它作为受支持的运行入口。参见 Adobe 开发者论坛说明

Bridge 脚本的写法

只读测试可以直接填写:

photoshop.app.documents.length

需要异步修改文档时,用 async 自执行函数,并让它成为脚本最后求值的表达式。下面的 UXP 示例把当前图像等比例缩小到最长边 500 像素,小图不放大,不自动保存。请先在图片副本中测试:

(async () => {
const { app, core, constants } = require("photoshop");
return await core.executeAsModal(async () => {
if (app.documents.length === 0) {
throw new Error("请先打开一张图片。");
}
const doc = app.activeDocument;
const scale = Math.min(1, 500 / Math.max(doc.width, doc.height));
if (scale < 1) {
await doc.resizeImage(
Math.max(1, Math.round(doc.width * scale)),
Math.max(1, Math.round(doc.height * scale)),
doc.resolution,
constants.ResampleMethod.BICUBICSHARPER
);
}
return { width: doc.width, height: doc.height };
}, { commandName: "最长边缩小到500像素" });
})()

“执行任意 JavaScript”默认不自动进入模态作用域。上例在脚本中自行调用 executeAsModal();如果改用自定义 script.evaluate 命令,也可以通过参数 modal: true 让 Bridge 包装模态作用域,此时不要再嵌套同样的包装。

粘贴代码时只复制代码内容,不要复制 Markdown 的三反引号、javascript 标记或说明文字。JSX 中的 #target photoshop 不是 UXP 语法,删除这一行也不代表其余旧 API 已兼容。无文档等错误可通过 throw new Error(...) 返回给 Quicker,不要直接照搬 ExtendScript 的全局 alert()

接口参考:Adobe UXP 与 ExtendScript 的区别Document APIexecuteAsModal

限制与排障

需要前台 Photoshop 且唯一在线会话。重复加载插件可能暂时留下同名会话,刷新并等待旧会话消失;模态操作可能阻塞调用。

命令全集来自当前实例的 command.list,本文不保证每个命令在所有宿主版本或文档状态下均可用。遇到问题先保存错误和版本信息,按通用排障定位安装、加载、连接或命令执行阶段。

相关页面