Skip to content

逻辑流程 ​

上传资源 ​

text
客户端 multipart 上传
  → API 检查请求大小并流式转发
  → Resource Service 写入 tmpfs
  → 校验 MIME、图片格式、尺寸和像素数
  → 创建 resourceToken 与固定 expiresAt
  → API 原样返回资源元数据

API 不保存上传文件。上传中断或校验失败时,Resource Service 删除未注册文件。

实时预览 ​

text
客户端创建 streamToken
  → 浏览器以固定 URL 订阅 multipart 流
  → 客户端提交完整预览任务
  → API 校验所有源资源、图层资源和活动流
  → API 为每个源资源并行调用 Image Worker
  → Image Worker 按 token 读取源图和图片图层
  → 全部 WebP 帧成功返回
  → API 以同一 revision 原子发布到全部流

新请求会取消与它操作相同源资源的旧请求。旧批次不能覆盖较新的 revision。任一资源或 Worker 调用失败时,本批次不会发布部分帧。

最终渲染 ​

text
客户端提交完整任务
  → API 预校验资源与模型
  → Resource Service 原子把源资源切换为 FINALIZING
  → API 限制并发并调用 Image Worker
  → 结果写入请求级 tmpfs
  → 全部成功后创建 manifest.json 和 ZIP
  → ZIP 完整交付
  → Resource Service consume 源资源
  → API 关闭关联预览流

如果渲染、ZIP 输出或客户端连接失败,API 删除请求级文件并将仍存在的源资源回滚到 READY。

图层渲染顺序 ​

  1. 按 zIndex 从小到大排序。
  2. zIndex 相同则保留请求数组中的原顺序。
  3. 图片图层解码后按 size 缩放。
  4. 文字图层使用内置字体生成透明图层。
  5. 阴影、平铺、旋转和透明度作为图层整体变换应用。
  6. 合成全部图层后按 output 编码。

预览固定输出 WebP、质量 80;最终通道才使用调用方的格式和质量。

Markify 文档与协议随实现同步演进。