视频加载失败

LINUX DO 帖子整理:【设计图完美转 code/figma】焚诀——image-to-code Skill

3005 字
15 分钟
LINUX DO 帖子整理:【设计图完美转 code/figma】焚诀——image-to-code Skill

原文来自 LINUX DO · 开发调优,作者 Donyzh,标题「【设计图完美转 code/figma】焚诀来了!我把自己炼成了 skill!」。约 2.3k 浏览 / 327 赞 / 77 帖。项目完整开源(MIT):yuzhworkhard-wq/image-to-code(帖内旧链接 image-to-code-skill 会 301 到此仓)。本文按「主帖流程 → Skill 核心规则 → 安装与触发 → 评论区精华 → 适用边界」整理,配图为原帖本地镜像。

01|这帖在解决什么#

作者是设计师,真实日常很像流水线:

  1. 用 GPT Image 2 生移动端效果图;
  2. 自己抠图、去字、清背景、对齐;
  3. 再交给 Codex 做代码还原;
  4. 需要时再导入 Figma 微调。

社区里同时有大量「效果图很美,Codex 一还原就崩」的吐槽。作者的判断是:

提示词再怎么优化,AI 也没有审美;但可以把设计师自己的测量 / 切图 / 锁定坐标 / 验收流程,炼成一套不可偷懒的 skill。

于是产出了 Codex skill:image-to-code。

一句话定位:

不是重新设计,也不是随便 vibe coding;而是把当前选中的 UI 图当作视觉合同,做 750px 像素级还原 + 高清透明切图 + 手机端自适应,并可继续导出可编辑 Figma 图层。

作者自评:固定高度的单一手机界面,还原可到约 95%,切图清晰、无明显低分辨率糊图。

02|九步工作流(主帖原意)#

只要触发该 skill,Codex 被约束按下面顺序走:

1. 检查图片元素#

先通读整张 UI 图:元素、文字、尺寸、层级、哪些是文本、哪些必须切图。

原图示例
原图示例

(原图)

2. 尺寸统一到 750px#

常见手机逻辑宽 375,2x 为 750。skill 强制把源图等比归一到 750px 宽,建立统一坐标系,方便测量与切图。

750 归一化
750 归一化

3. 建立 layers.manifest.json#

manifest 是布局、切图、代码、Figma 的唯一数据源。禁止先写“看起来差不多”的页面,再回头补图。

4. 预览 bbox#

切图前先把每个资源目标的位置、大小画出来,对齐完整外框(含阴影、浅色底、半透明边缘)。

bbox 预览
bbox 预览

5. 导出高清资源#

生成 UI 图常像素不足。skill 强制把资源按 asset_scale_factor 放大到 2x / 3x / 4x 导出,但页面显示尺寸仍等于原元素外框——高清的是文件像素,不是布局被撑大。

6. 锁定画板并匹配资源#

  • 文本、简单矩形/圆/线/按钮底 → 代码化
  • icon、插画、头像、复杂装饰 → 独立透明 PNG,按 manifest 坐标贴回

资源匹配
资源匹配

实测提醒:Codex 偶尔会偷懒,个别图背景没抠干净,所以 skill 里把透明审计写得很死。

7. 自适应#

先产出 750px 锁定稿,再强制加外层 fit wrapper,验证 375px 及其他手机宽度;适配只能整体等比缩放,禁止对子元素重排。

8. 检查#

分模块验收(矢量 / 文本 / 位图),750px 叠图对比,手机端截图复核。

9. 导出到 Figma(可选)#

代码与 QA 完成后,基于同一份 manifest / code / assets 生成可编辑 Figma 图层规格或本地 importer。作者自己还做了 web to figma 插件(帖内多次被催更,截至整理时仍未正式放出)。

最终效果对照#

原图
原图

(原图)

HTML 结果
HTML 结果

(HTML 文件)

Figma 结果
Figma 结果

(通过 web to figma 插件复制进 Figma 的效果)

03|Skill 的硬规则(比 README 更狠)#

仓库核心是 SKILL.md。下面只提炼会真正改变行为的规则。

3.1 750px 是基准坐标,不是唯一显示宽#

scale = 750 / source_width
final_width = 750
final_height = round(source_height * scale)

同一 scale 必须应用到:坐标、宽高、圆角、描边、阴影、渐变、字号、行高、字间距。

生产页必须再套一层:

scale_fit = min(1, availableWidth / 750)

只缩放外层 wrapper;.artboard 仍是 750 宽锁定稿。

3.2 禁止“近似重绘”#

下列一律算失败,哪怕页面“更规整、更清晰”:

  • 用 lucide / Material / SF Symbols 等相似图标替换原图 icon
  • 重画钱包、礼盒、徽章、头像等卡片插画
  • 为了适配组件,改卡片高度、圆角、间距、图片露出比例
  • 用 CSS 临摹复杂位图
  • 把局部露出的装饰改成居中/放大

抠不干净 → 保留完整裁片并说明限制;禁止用“看起来差不多”的替代素材。

3.3 透明背景硬规则#

transparent_required: true 的资源(默认:icons / illustrations / 不规则装饰):

  • 必须有 alpha
  • 不能带白底、灰底、页面底、卡片底矩形
  • 先按完整外框 + 安全留白切,再抠底;禁止先抠再 trim
  • 本地 floodfill 不干净时,可用 image2/imagegen 只去背景,禁止重生主体
  • 必须在棋盘格 / 黑底 / 白底上验收
  • 跑 scripts/audit_png_assets.py --require-transparent-bg

3.4 防裁切硬规则#

  • 宁可画布偏大留透明,也不能裁掉阴影/浅色底/抗锯齿边
  • 非透明像素贴到四边 → 默认判定裁切失败,扩大 bbox 重出
  • 服务宫格、底栏 icon 必须整件导出,不能只截符号局部

3.5 自适应硬规则#

  • 没有 375px 验证的交付视为未完成
  • 禁止 min-width: 750、横向滚动、浏览器 zoom 冒充适配
  • 禁止为了 375 去改子元素字号/间距/坐标

推荐结构:

<main class="fit-shell">
<div class="fit-box">
<section class="artboard">...</section>
</div>
</main>
:root {
--board-w: 750;
--board-h: 1624; /* 按源图比例计算 */
--fit-gutter: 0px;
--board-scale: min(1, calc((100vw - var(--fit-gutter) * 2) / (var(--board-w) * 1px)));
}
.fit-box {
width: calc(var(--board-w) * 1px * var(--board-scale));
height: calc(var(--board-h) * 1px * var(--board-scale));
overflow: hidden;
}
.artboard {
position: relative;
width: calc(var(--board-w) * 1px);
height: calc(var(--board-h) * 1px);
transform: scale(var(--board-scale));
transform-origin: top left;
}

3.6 Manifest 最小字段#

{
"id": "card-wallet-illustration",
"type": "bitmap",
"source_bbox": { "x": 338, "y": 520, "width": 116, "height": 122 },
"scaled_bbox": { "x": 338, "y": 520, "width": 116, "height": 122 },
"z_index": 24,
"asset": "assets/illustrations/card-wallet-illustration.png",
"asset_pixel_width": 232,
"asset_pixel_height": 244,
"asset_scale_factor": 2,
"css_display_width": 116,
"css_display_height": 122,
"transparent_required": true,
"notes": "从当前源图裁切,保持原图露出比例"
}

关键等式:

asset_pixel_* = css_display_* × asset_scale_factor

布局永远看 CSS 显示尺寸;文件可以是 2x/3x/4x。

04|仓库结构与安装#

image-to-code/
├── SKILL.md
├── README.md
├── LICENSE
├── requirements.txt # Pillow + NumPy
├── agents/openai.yaml
├── references/
│ ├── figma-editable-export.md
│ └── slicing.md
└── scripts/
├── preview_bboxes.py
├── extract_png_asset.py
├── audit_png_assets.py
└── compare_images.py

安装到 Codex skills 目录:

Terminal window
# 克隆到 skills 目录(目录名建议 image-to-code)
git clone https://github.com/yuzhworkhard-wq/image-to-code.git \
~/.codex/skills/image-to-code
python3 -m pip install -r ~/.codex/skills/image-to-code/requirements.txt

触发示例:

使用 $image-to-code 将当前选中的 UI 图片转换为自适应代码,并导出透明 PNG 切图资源。

或自然语言:

把这张移动端设计图还原成 HTML/CSS,最终页面要自适应手机宽度,
图标和插画请按 2x/3x 单独切成透明 PNG,后面还要能导入 Figma。

常用脚本:

Terminal window
# bbox 预览
scripts/preview_bboxes.py source.png layers.manifest.json qa/bbox-preview.png --only-type bitmap
# 高清透明切图
scripts/extract_png_asset.py source.png assets/icons/icon-home-01.png \
--x 120 --y 88 --width 32 --height 32 \
--scale-factor 3 \
--css-width 32 --css-height 32 \
--remove-bg floodfill \
--manifest layers.manifest.json \
--id icon-home-01
# 透明/贴边/尺寸审计
scripts/audit_png_assets.py assets/icons assets/illustrations assets/images \
--require-transparent-bg \
--manifest layers.manifest.json

05|作者自述的局限性#

主帖写得很清楚:

  1. 目前只做手机端;PC 端尺寸多、自适应更难,后续再做。
  2. Codex 会偷懒:透明背景、细节抠除不稳定,需要更硬的限制与脚本审计。
  3. 导出 Figma 略麻烦;作者有 web to figma 插件,需求多会再发(评论区催更最多)。
  4. 只适合单一界面固定高度复刻;长页被手机高度裁掉的下半截,当前做不出“继续下拉”的延伸效果。
  5. 当前 skill 主要面向 Codex(作者回复:Claude 无生图能力时,重绘/抠底会卡住)。

作者在评论里进一步澄清定位:

  • 这更像 C 端活动页 / 飞机稿 的快速落地,不是 B 端组件库 / design system 的完整替代。
  • B 端更需要 design.md、组件复用、产品与交互约束;那是另一条线。
  • 有 Figma 源文件 + Dev Mode / MCP 时,未必需要这条 skill;这条 skill 解决的是 只有 PNG/JPG 效果图 时的还原。

无需插件的调用示意
无需插件的调用示意

代码与图片分区示意
代码与图片分区示意

(标注位是图片切图,其余多为代码实现)

06|评论区精华(77 帖压缩)#

6.1 最常见的真实痛点#

  • Image2 出图很美,Codex 直接还原复杂页经常崩(尤其深色、大屏、高密度 UI)。
  • Figma 官方 MCP 要 Dev 账号(约 $20/月),国内也有人转 MasterGo / 莫高,但积分不便宜。
  • 商业插件如 Codia AI Design(Screenshot → Editable Figma) 被多次点名:复杂图、深色背景还原更稳,但收费。
  • 大量催更:web to figma 插件、PC 端 skill、Claude 版。

6.2 作者对关键质疑的回应#

质疑作者回应要点
低分辨率原图强制放大是否糊?切完后会放大/重绘;Image2 产出像素本就有限。源图过低时应强制元素重绘。
这是不是只会做活动页、设计师还是螺丝钉?承认主场景是 C 端活动/酷炫飞机稿;B 端另需组件与 design 文档。skill 只流程化作者部分工作。
为什么不直接轻提示词?社区反馈显示轻提示词很难复刻 ToC 活动页;需要测量/manifest/审计闭环。
Image2 商业可用性?C 端以前很吃力;Image2 后“简单几句话就有不错界面”,卡点变成微调。skill + 插件正好接微调。
Figma → 代码不是已经很好了吗?是的;前提是设计师图层/容器逻辑正确。图层乱套时,MCP 也救不了。
和 Figma 源文件路线比呢?有源文件 + MCP 时,这条 skill 不是必选项;它服务 只有效果图 的场景。

6.3 工作流共识(程序员视角)#

评论区逐渐收敛出两条互补路径:

  1. Image → Code(本 skill)
    适合:活动页、单一手机界面、快速 HTML/CSS 落地、没有设计源文件。

  2. Image → 可编辑 Figma →(MCP)→ Code
    适合:后续还要改稿、深色复杂页、需要接近 100% 精确还原再进工程。

作者路线本质是:

Image2 出图
→ image-to-code(测量 / 切图 / 750 锁定 / 自适应 QA)
→(可选)web to figma / importer 进入 Figma 微调
→ 需要工程化时再接组件与 design 文档

6.4 其他值得记的点#

  • 有人问能否切 SVG、可改色 icon:合理增强方向,主帖未实现。
  • 有人吐槽 Codex/Image2 难出真正透明图:skill 的价值之一就是程序化抠透明 + 审计,但复杂植物/花草类抠图仍难。
  • 有科研开源软件作者表示要二开融合进自己的绘图工具链(帖 #67)。

07|你该不该用它#

适合:

  • 手里只有 Image2 / Midjourney / 截图等 位图效果图
  • 目标是 移动端单页 高还原 HTML/CSS
  • 需要 透明高清切图,而不是整页一张大图
  • 想把“测量 → 切图 → 代码 → QA”固化成 Agent skill,而不是每次口头提醒

不太适合:

  • 已有规范 Figma 源文件且能走官方 MCP / 设计稿转代码
  • B 端后台、组件库、设计系统沉淀(需要 design token / 组件约束,不是单页像素合同)
  • 超长滚动页、多状态交互原型、PC 多断点重排
  • 期望 Claude 无图编辑能力时自动完成重绘抠底

08|可直接带走的最小操作清单#

  1. 把仓库放到 ~/.codex/skills/image-to-code
  2. 安装 Pillow / NumPy
  3. 在 Codex 中点名 $image-to-code,附上移动端 UI 图
  4. 要求交付物至少包含:
    • 自适应页面代码
    • layers.manifest.json
    • assets/ 高清透明 PNG
    • bbox 预览与 750 / 375 截图 QA -(可选)figma-code-import/ 本地 importer
  5. 用审计脚本卡住“假透明 / 贴边裁切 / 尺寸不对”

09|来源与版权#


如果你只想记三句话:

  1. 原图是视觉合同,不是灵感板。
  2. 先 manifest 与切图,再写代码;先 750 锁定,再整体缩放。
  3. 透明、防裁切、375 验收不过,就不算交付。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

LINUX DO 帖子整理:【设计图完美转 code/figma】焚诀——image-to-code Skill
https://linux.do/t/topic/2314994
作者
皮耶罗
发布于
2026-07-24
许可协议
CC BY-NC-SA 4.0
相关文章智能推荐
1
LINUX DO 帖子整理:GPT 5.4/5.5 逆向破限"焚诀"提示词
AI Agent Skills整理 LINUX DO 论坛用户 Sophomores 分享的 GPT 5.4/5.5 反向破限提示词(含完整 State-Machine 工作流),以及 48 条评论中的关键讨论——封号风险、骂 AI 加成、"宝宝"人设、DeepSeek 替代方案等。
2
LINUX DO 帖子整理:第一性原理神提示词合集(问题拆解 / 因果机制 / 质疑默认)
AI Agent Skills整理 LINUX DO 帖「神提示词!!!条理逻辑拉满」的评论区精华:从第一性原理出发拆解问题、找出未言明的核心问题、按因果机制而非空抽象分层,以及默认质疑而非迎合的系统指令。可直接作系统提示词或 Skill 片段。
3
LINUX DO 图析:AI 时代的思维框架(地形图 / Softmax / 注意力与 Prompt 技巧)
AI Agent Skills完整图析 LINUX DO 高赞帖「AI 时代的思维框架」:用玻尔兹曼分布与 Softmax 把 LLM 自回归生成画成「概率地形 + 小球滚动」;拆解语义漂移、注意力稀释、语义惯性等 18 张原图,并整理可落地的 Agent / Prompt 工程技巧与评论区共鸣。
4
科研相关 skills 推荐
AI Agent Skills科研相关 AI Agent Skills 推荐,持续补充中。
5
怎么给 AI 派任务?把提示词写成一份可验收的任务单
提示词一篇可以直接照抄的 AI 任务提示词指南:用目标、背景、成功标准、权限边界、验证要求和停止条件,把一句模糊需求写成 AI 真正能执行、能验收、不会无限发挥的任务单。
随机文章随机推荐
Profile Image of the Author
皮耶罗
在超市后门,和喜欢的故事一起短暂放空。
公告
这里记录了技术探索、日常反思和开源旅程。
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
分类
标签
站点统计
文章
59
分类
16
标签
237
总字数
121,121
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
GitHub Actions
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录