2388 字
约 7 分钟
0
AI「生图→切图→补齐→导出」

AI「生图→切图→补齐→导出」完整流水线 · 通用复现文档

用途:复现一条"把一张图(AI生成或上传)转成可导出的切图/补齐后的完整资产"的流水线时,逐段照着建。 覆盖五段:输入 → 校验 → 拆图 → 补齐 → 输出路径。 本文已把"拆图"环节的切图识别规则(允许/禁止)完整并入阶段③,不再单列。


流水线总览

输入
 ├─ AI生图/图生图   (后端 → /v1/images/generations)
 └─ 本地图片        上传 PNG/JPG/WebP
        │
        ▼
校验  (core/ai-image-dimensions)
  · 尺寸 256–4096px
  · 支持类型白名单
        │
        ▼
拆图  (core/background-decomposition)
 ├─ 切图资产  → 可独立导出的像素/形状
 ├─ 背景候选  → 蓝框(建议)
 └─ 覆盖层    → 红框(需移除并 AI 补齐)
        │
        ▼
补齐  (后端 /api/images/edit)
 ├─ AI补齐·原图     → 整图输出
 └─ AI补齐·局部合成  → 仅贴回修补区域(保留其余像素)
        │
        ▼
输出路径
 ├─ 切图导入    → 插件建 Frame(按原坐标)
 ├─ AI图层导入  → HTML/CSS预览 → DOM捕获 → Figma图层 / 下载HTML ZIP
 └─ 下载HTML    → index.html + styles.css + script.js + assets/

阶段① · 输入

AI生图/图生图  (server → /v1/images/generations)
本地图片       上传 PNG/JPG/WebP

复现要点

  • 两类输入来源不同:一步走 images/generations,一步走文件上传。别复用错接口
  • 进管线前统一归一化(尺寸+编码+类型检查),不要在两类输入上各写一套。

易错

  • ❌ 把"AI 生图"的返回格式和"上传文件"当成同一处理。
  • ✅ 统一输入规范化层。

阶段② · 校验

尺寸  256–4096px
类型  PNG / JPG / WebP

复现要点

  • 上下限(256、4096)、类型白名单收成常量/配置,别散写魔法数字。
  • 校验失败明确报错 + 给合法范围,不静默继续。
  • 对超大图/不支持类型要提前拦下,避免卡死后段。

阶段③ · 拆图(背景拆解)

切图资产   → 可独立导出的像素/形状
背景候选   → 蓝框(建议)
覆盖层     → 红框(需移除并 AI 补齐)

复现要点

  • 坐标铁律:AI 返回的 bbox 一律原始像素坐标,解析器钳制越界+取整。
  • 类型白名单成对:允许切集的种类 + 禁止切的种类都写死(详见下节"切图识别规则")。
  • 数量/尺寸上限:背景候选、覆盖层各有上限,超限丢弃或报错,别硬塞。
  • 蓝/红框语义别搞反:蓝框=背景候选(建议)、红框=覆盖层(需补齐)。互换后补齐会取错区域。

易错

  • ❌ 坐标归一化/换单位 → 后面对齐全错。
  • ❌ 只写"允许切"漏"禁止切" → 把文字/按钮切成碎片。

③-A 切图识别规则(允许 vs 禁止,成对写死)★

核心观点:"允许切什么"和"禁止切什么"必须成对写死 —— 只记允许项,复现时会漏掉禁止项,导致不该切的被切成 PNG。

① 允许切(可独立导出为像素/形状的类型)

类型 例句(按需替换)
图标 icon
头像 avatar
插图 illustration
照片 photo
产品图 product-image
复杂装饰 complex-decoration
复杂图表 complex-chart
Logo logo

选型原则:只切"用普通 CSS/简单形状无法可靠重建、必须保留为原始光栅"的区域。

② 禁止切(明确不导出的类型)★ 易漏、必须也写死

以下这些不要切成独立 PNG —— 因为它们用 CSS / 简单形状就能重建:

  • 普通 UI 文字(文本/段落标题等,可作为文字图层)
  • 按钮背景(可 CSS 实现)
  • 卡片 / 容器(可 CSS 实现)
  • 分隔线(dividers)
  • 简单矩形 / 圆形(基本形状可重建)
  • 布局容器(Layout frame/容器,不需要固有 PNG)
  • Logo/徽标/插画里不可分割的艺术字 —— 例外:若文字与图无缝融合、无法分离,可作为一个整体 PNG 切出

原则:能重建的就不切成像素;只有"重建不了才保留为 PNG"。

③ 成对写死的 prompt 模板

指令:
1. 只返回"必须保留为 PNG 裁剪"的光栅资产(bbox 用原始像素坐标,不归一化)。
2. 允许的类型仅限:【allowed_kinds】。
3. 禁止返回:【forbidden_kinds(普通文字/按钮背景/卡片/分隔线/简单形状/布局容器)】。
4. 只有文字与图形不可分割的 Logo/徽标/插图,可作为单独 PNG 整体返回。
5. 返回 JSON: {"assets":[{name,kind,bbox:{x,y,width,height},confidence,containsEmbeddedText,reason}]}

关键:"允许"与"禁止"必须成对出现,缺一不可。很多翻车是复现时写了第 2 行、漏了第 3 行。

④ 切图结果解析时的过滤(代码层,同样成对)

过滤项 规则 若漏掉
种类白名单 kind 必须在允许集内 混入不该切的
禁止项 kind 命中禁止集 → 丢弃 把文字/按钮切出来
最小尺寸 宽或高 < 阈值(如 8px) → 丢弃 产生无意义小图
坐标钳制 clamp 回原图范围 + 取整 越界/错位
数量上限 超过上限 → 丢弃或报错,不硬塞 图太多失控

阶段④ · 补齐

AI补齐·原图      → 整图输出
AI补齐·局部合成   → 仅贴回修补区域(保留其余像素)

这是最容易复现错的环节,重点注意

  • 两种补满是不同回填方式:
    • 整图输出 → 输出全新一张图
    • 局部合成 → 只贴回修补区域,其余像素原样不动
  • 守住:局部合成必须记住"修补区域掩码/bbox",回贴时只覆盖那一块;否则未改部分也被殃及,背景被重画变脏。
  • 别图省事全用"整图输出" → 没改的地方也被 AI 改掉。

易错

  • ❌ 把"局部合成"做成"整图重绘" → 补坏所有像素。
  • ✅ 记住修补区域,只回贴那一块。

阶段⑤ · 输出路径

切图导入   → 插件建 Figma Frame(按原坐标)
AI图层导入 → HTML/CSS预览 → DOM捕获 → Figma图层 / 下载HTML ZIP
下载HTML   → index.html + styles.css + script.js + assets/

复现要点

  • 坐标体系一致:导入 Figma 的"按原坐标"必须和拆图阶段的坐标同一套(同 origin/单位),否则错位。
  • 产物自洽:下载 HTML 的四个部分(index.html+styles.css+script.js+assets/)相对路径要自洽,先在空目录打开验证能独立还原。
  • 锁浏览器版本:DOM捕获→Figma图层依赖 headless 渲染一致性,锁 Playwright/Chromium 版本。

易错

  • ❌ 拆图像素坐标 与 导入 placement 不同体系 → 全错位。
  • ❌ 下载 HTML 路径引用错/缺 assets → 打开展现不了。
  • ❌ 浏览器版本漂移 → 捕获结果不一致。

全流程复现检查清单(照抄打勾)

□ 输入统一规范化(AI生图/上传,进管线前归一)
□ 校验:尺寸 256–4096、类型白名单,失败明确报错带范围
□ 拆图:bbox 一律原始像素坐标 + 钳制 + 取整
□ 拆图:允许/禁止类型白名单成对写死(允许集 + 禁止集,缺一不可)
□ 拆图:例外规则——不可分割的 Logo/插画可整体切(否则会漏切)
□ 拆图:prompt 与 parser 的双白名单保持一致(前端别改、解析漏改)
□ 拆图:数量/尺寸上限,超限丢弃不硬塞
□ 拆图:蓝框=背景候选 / 红框=覆盖层(语义别互换)
□ 补齐:区分"整图输出" vs "局部合成"
□ 补齐:局部合成只回贴修补区,其余像素不动(用掩码/bbox)
□ 输出:导入坐标与拆图坐标同一套 origin/单位
□ 输出:下载HTML 四件套相对路径自洽,先空目录验证
□ 输出:锁定 headless 浏览器版本

最容易复现错的 Top 4

  1. 坐标/单位体系不一致(拆图像素 ↔ 导入 placement)→ 全部错位。
  2. 把"局部合成补齐"做成"整图重绘" → 修补淹没未改区域。
  3. 蓝/红框语义互换或种类白名单漏守 → 切错、补错。
  4. 下载 HTML 相对路径自洽性 → 单文件能开、整包打开是碎的。

相关

  • 通用:双线程架构通用笔记缓存失效与改了就更新模型任务分流(理解 vs 生成)
  • 注:本文的"阶段③ · 拆图"已完整涵盖切图识别规则(允许/禁止),不再另列专篇。
  • 本项目实际位置(参考):src/core/background-decomposition/src/core/slice-detection/src/server/services/
AI「生图→切图→补齐→导出」
http://www.clxhxhhr.top/posts/539/
作者
clxstart
发布于
2026-09-08
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。