FullPsd 调试台

/console

凭证与探活

GET /health · POST /api/session

凭证只放在请求头(X-Api-Key / Authorization: Bearer), 绝不会拼进 URL,也不会写进下面的请求日志。填写的 key 与服务地址仅存在本浏览器的 localStorage, 不会发给任何第三方;换台机器要重新填。

尚未探活。点「探活 /health」确认服务地址、渲染后端与鉴权状态。

上传 PSD · 图层树

POST /api/doc/inspect

上传后只解结构、不解像素。图层树里点任意一层,右侧显示详情,并可一键作为 op 的目标。

图层树

还没有解析任何文件。

图层详情

在左侧点选一个图层。

ops 构造器 · 执行编辑

POST /api/doc/edit(multipart 文件模式)

ops 是有序数组,core op 与服务端 op 可以任意混排;表单与右侧 JSON 双向同步。 index 用 inspect 的 flat[].index;服务端 op 的 target 可写 {smartObjectIndex} / {layerIndex} / {name}

这里走的是整份上传的文件模式。只改一小块(文字 / 图层属性 / 改名 / 变形 / 智能对象放置描述符)时, 改用 POST /api/doc/edit/incremental 只往返那几段字节,产物逐字节相同 —— 它需要在客户端本地解析 PSD 来切片段,调试台不做这件事, 协议与现成实现见 文档 · 增量编辑

ops JSON

与左侧表单实时同步。手改后点「解析回表单」。

输出与渲染参数

dry-run 结果

POST /api/doc/edit/plan

只判定可行性、不产出文件。plan 说不行的,真提交一定是 4xx。不合法的 op 会高亮。

还没跑过 dry-run。

文件体检

POST /api/doc/validate

解析 + lintPsd + 字节级往返自检。文件本身有问题也返回 200, 看 ok 才是结论。报 bug 时请带上 firstDiffOffset

还没体检。

单层像素预览

POST /api/doc/layer-preview

分组 / 分隔层没有自己的像素(会 400)。与 /api/render 共用全局并发闸。

合成图

POST /api/doc/composite

解的是文件末尾 Image Data 段里 Photoshop 存好的合成图,不重新渲染图层。

PSD 结构(渲染管线口径)

POST /api/psd/info

/api/render 用的口径:图层清单 + 智能对象网格(mesh.xn×yn、是否规则)。

渲染(换智能对象源图)

POST /api/render

multipart:psd + image×n + spec(JSON)。 spec.replacements[n].target 数字 = 智能对象序号,字符串 = 智能对象 / 图层名。

片段写回(不传 PSD)

POST /api/doc/edit(application/json) · POST /api/so/writeback

只把放置块(KB 级)发上来。请求体 { fragment, edit }{ items:[…] }; 两个端点同一段实现、响应逐字节相同。editpoints/xn/yn/sliceX/sliceY(Bezier 网格) 或 deform(透视变形 / 操控变形滤镜)。

代码生成

curl · JavaScript(fetch) · Python(requests)

key 一律用占位符($FULLPSD_API_KEY / API_KEY),不会写入真实凭证。 各面板的「生成代码」按钮会把当前参数填进来。

还没有构造任何请求。

请求日志

方法 / 路径 / 状态码 / 耗时 / 响应大小(不含凭证)
大响应体截断到 4000 字符;二进制只记类型与大小。

还没有请求。

FullPsd 调试台 · 纯静态单文件,不引用任何外部资源。凭证仅存本浏览器。