主题
GPT Image 画布实战:图片生成与编辑
对话框里生成图片的痛点是"看不见过程":改一版就丢一版,想在某张图的基础上继续改也没有入口。本教程用开源项目 infinite-canvas(无限画布)解决这件事:所有图都摊在一张无限画布上,提示词、参考图、生成结果连成线,改哪张从哪张继续。
完成后你会得到:
- 一个连着你自己的 OpenAI 兼容图片接口的画布工作台;
- 一套可直接套用的生成模板和编辑模板提示词。
1. 先看最终效果
打开画布,输入一段提示词生成一张海报;把生成的图作为参考图,拖出下一个节点,输入"把背景换成夜晚,文字保持不变",得到第二版;两版都在画布上,随时对比、继续迭代。
API Key 和画布内容默认保存在浏览器本地(IndexedDB),不经第三方服务器转存。
2. 项目边界与选型
text
infinite-canvas 是什么:创作工作台。画布编排 + 浏览器直连你配置的接口。
infinite-canvas 不是什么:生产管线。批量、可复现、节点化流程请用 ComfyUI。一句话决策(完整选型见《AI 绘画与图像实战》第 1 节):
text
要艺术概念图 → Midjourney;图里必须有准确文字 → GPT Image
批量又要便宜 → Nano Banana;做成自动化流水线 → ComfyUI
想边比边改、过程可视化 → 本篇的无限画布提示词的底层方法论(六段式、一致性控制)本篇不重复,直接引用《AI 绘画与图像实战》第 2、3 节;本篇专注部署、接接口、生成与编辑的实操模板。
3. 部署画布
3.1 方案 A:直接用已部署实例
打开 http://infinite.stjhub.com/ 即可使用,跳到第 4 节配置接口。适合先体验再决定是否自部署。
3.2 方案 B:Docker 自部署
bash
git clone https://github.com/basketikun/infinite-canvas.git
cd infinite-canvas
docker compose up -d浏览器访问 http://localhost:3000。
3.3 方案 C:源码运行(想改代码时)
bash
git clone https://github.com/basketikun/infinite-canvas.git
cd infinite-canvas/web
bun install
bun run dev注意:项目仍在开发期,不保证历史数据兼容;打算长期维护就 fork 自己的分支。
4. 配置图片 API
打开右上角设置,填三项:
| 配置项 | 填什么 | 说明 |
|---|---|---|
| Base URL | https://你的服务商/v1 | 任何 OpenAI 兼容接口(中转站、自建服务) |
| API Key | sk-xxxxxxxx | 服务商颁发的密钥,只存浏览器本地 |
| 模型名 | gpt-image-2.5-flare | 以你的服务商为准,各家名称可能不同 |
GPT Image 的 API 有两款(2026-09 核对)(见《AI 绘画与图像实战》1.2 节):Flare 默认款,平衡速度与质量,日常首选;Sunburst 高控制款,构图与元素位置控制更强,适合精密电商图。
画布实际调用的就是两个标准端点,理解它们有助于排查问题:
text
文生图:POST /v1/images/generations JSON:{ model, prompt, size, n }
图编辑:POST /v1/images/edits multipart:image + prompt + modelCORS 提醒:画布是浏览器直连接口。若服务商没开 CORS,请求会失败——此时用项目支持的"自定义接口调用脚本"包一层(让 Agent 帮你写这个适配脚本也是一次标准的代码委托),或改用开了 CORS 的中转站。
5. 第一张图:文生图
新建画布 → 添加文本节点 → 粘贴提示词 → 连到生图节点执行。第一张图建议直接用六段式骨架:
text
设计一张咖啡店开业海报。
主体:蒸汽升腾的拿铁,杯身印 "MORNING BREW 晨酿"。
环境:暖色木质吧台,午后阳光。
构图:竖版居中,顶部留白放标题。
光影:柔和侧光,暖色调。
风格:现代简约,高级感。
文字:顶部大字 "MORNING BREW 晨酿",小字 "OPENING 9.10"。为什么选 GPT Image 开工:图里有精确文字时它最稳(准确率口径见《AI 绘画与图像实战》版本快照)。尺寸先用默认,跑通后再调。
6. 图生图与参考图编辑
编辑是画布相对对话框最大的优势:把已生成的图连线到下一个生图节点,它就走 images/edits 通道。四类高频操作:
text
局部修改:保持画面其他部分不变,只把左下角的杯子换成玻璃杯。
换背景:主体不变,背景替换为夜晚的城市街景,光线随之调整为霓虹冷暖对比。
风格迁移:保持人物姿势与构图,把整体风格改为吉卜力手绘风。
扩图延展:以这张海报为核心,向左右扩展成横版 banner,风格延续。编辑提示词的核心是说清"什么不动",模型默认会重画全局;主体一致性的更多手法见《AI 绘画与图像实战》第 3 节。
7. 可复用提示词模板
7.1 生成模板(六段式落地版)
text
任务:做一张【海报 / 电商主图 / 头像】。
主体:谁/什么,有什么细节。
环境:在哪里,什么氛围。
构图:横竖版、主体位置、留白用途。
光影:什么光,什么色调。
风格:什么风格,参考什么质感。
文字(如有):逐字写清内容、位置、字体感觉。7.2 编辑模板(保留 + 修改 + 禁止)
text
参考图是【描述这张图】。
保留:主体外观、【关键元素】、【构图/文字】完全不变。
修改:仅将【目标区域】改为【目标效果】。
禁止:不要改变主体长相,不要改动画面其他部分。7.3 填好的示例
text
【电商白底图】主体:一只白色陶瓷马克杯,杯口有轻微热气。
构图:竖版居中,纯白背景。光影:顶部柔光,杯身有淡反射。
风格:产品摄影,商业级清晰度。文字:无。
【风格化头像】参考图是本人半身照。保留:面部特征、发型、眼镜。
修改:仅将背景改为青紫渐变,整体风格改为扁平插画风。
禁止:不要改变五官比例,不要添加饰品。
【活动海报】任务:做一张讲座海报。主体:讲台与话筒剪影。
构图:竖版,下部 1/3 留白放信息。风格:深蓝底色,科技感线条。
文字:底部写 "AI 时代工作坊 · 9.26 19:00",清晰无衬线体。模板存进画布内置的提示词库,下一次直接调用,不必重新组织语言。
8. 常见报错与排查
| 现象 | 常见原因 | 处理 |
|---|---|---|
| 401 Unauthorized | Key 错误 / 中转站未授权该模型 | 核对 Key 与模型名 |
| 429 Too Many Requests | 限流或余额不足 | 等待重试、充值或换线路 |
| 请求发出但无响应 | 服务商未开 CORS(浏览器直连限制) | 换开 CORS 的中转,或用自定义调用脚本 |
| 生成图与提示词无关 | 模型名不匹配(如填成了聊天模型) | 确认是图像模型再执行 |
| 长时间超时 | 高峰期排队 | 换 Flare 款、降低尺寸,或稍后重试 |
更多通用排错见《排错与帮助》。
9. 进阶与完成标准
跑通基础链路后,值得继续的三件事:
- 提示词库:把第 7 节模板存进画布内置提示词库,或接自定义 JSON 来源,团队共享;
- 自定义接口调用:默认 OpenAI 格式不满足时(某些中转站参数不同),让 Agent 按项目提供的 TypeScript SDK 写一个调用适配脚本,这是又一次标准的代码委托练习;
- 本地 Canvas Agent:连接 Codex / Claude Code,让 Agent 通过 MCP 直接操作当前画布——批量生成、按规则改图就能交给 AI 干了,对应《AI 编程》的委托思路。
完成标准:
- [ ] 画布能成功生成第一张含准确文字的图;
- [ ] 用编辑模板完成一次"局部修改且主体不变"的迭代;
- [ ] API Key 只存在浏览器本地,且已确认没有粘贴到共享截图里;
- [ ] 生成模板和编辑模板各存入提示词库一次;
- [ ] 能独立读懂一次失败请求对应第 8 节表格中的哪一行。