- 人工智能
- AI 技能/插件
- 提示工程
【免费下载链接】garden-skills
ConardLi's open-source Skills collection, featuring web design, knowledge retrieval, image generation, and more.
本篇文章是 garden-skills 仓库中 gpt-image-2 技能 的「编辑工作流」系列模板之一——背景替换工作流模板 的完整技术解读。你将从任务边界判断、缺失信息提问顺序、主模板与三种变体模板、自动补全策略,一直深入到对应的 edit.js 脚本实现与 OpenAI 兼容图片编辑接口的调用细节,读完即可直接复用这套结构化模板跑通「单主体换背景」类任务。
一、这个模板解决什么问题
背景替换是「基于现有图片做编辑」类任务(对应POST /images/edits接口)中最常见的一种:输入一张主体图,输出一张主体完全保留、背景换成指定新场景的图。garden-skills 中 gpt-image-2 技能把它沉淀为一个独立模板文件,并与同目录下的其它编辑模板(局部对象替换、杂物去除、产品精修)明确划清边界,避免误用。
从 SKILL.md 的模板索引可以看到,编辑工作流(Editing Workflows)下共有五个模板:
background-replacement.md— 背景替换(商品 / 人像 / 户外 / 棚景),即本文主体- local-object-replacement.md — 局部对象替换(配合或不配合蒙版)
- object-removal.md — 杂物 / 路人 / 电线 / 瑕疵去除
- product-retouching.md — 产品精修(光泽 / 标签 / 阴影 / 瑕疵)
portrait-local-edit.md— 人像局部修改(发型 / 服装 / 妆容 / 配饰)
适合场景
模板开头列出的四类典型业务场景:
| 场景 | 典型描述 |
|---|---|
| 商品图换背景 | 白底 → 生活场景 / 影棚 / 户外 |
| 人像换背景 | 杂乱 → 干净棚景 |
| 老照片背景翻新 | 旧背景替换为干净或指定场景 |
| 跨品类素材统一背景风格 | 多张图换到同一背景风格,保持系列统一 |
适用范围
该模板限定为三类边界清晰的编辑任务:
- 单主体图换背景
- 主体不变 / 仅背景变
- 主体边缘清晰 / 可识别
何时使用
当用户的行为符合以下任一情况时,命中此模板:
- 用户提供原图(
REFERENCE_0)+ 一句「换成 XX 背景」 - 用户希望主体不动、只换背景
- 用户希望多张图统一背景
不要使用的情况(任务分流)
模板明确给出「不要使用」的三种情形,用于与相邻模板做边界切分:
- 主体本身需要修改→ 用 local-object-replacement.md
- 仅去除某物(不换新对象)→ 用 object-removal.md
- 产品本身需要精修(质感升级而非替换)→ 用 product-retouching.md
判断口诀:换的是「背景」用本模板,换的是「主体/对象」用局部替换,去掉的是「某物」用去除,升级的是「质感」用精修。
二、缺失信息优先提问顺序
模板遵循 prompt-writing.md 定义的「精准提问、少量提问、围绕模板关键字段」原则,为背景替换任务规定了五级提问优先级:
- 原图描述 / 主体是什么——决定保留边界,缺失会让模型不知道「哪些不能动」
- 新背景:场景 / 色调 / 灯光——决定替换目标,是本任务的核心输入
- 是否保留原图灯光方向——影响后续是否要求「重新布光」
- 是否需要重新阴影 / 反光——影响 prompt 中是否追加阴影重生成指令
- 输出比例(保持原图 / 调整)——影响
aspect ratio参数
参数策略
模板把参数分为三类(对应 prompt-writing.md 的 6.1/6.2/6.3 节):
| 参数类型 | 本项目中的内容 | 处理方式 |
|---|---|---|
| 必问 | 原图主体、新背景描述 | 缺失会显著影响结果,优先提问 |
| 可默认 | 渲染风格、输出比例 | 直接用模板default值 |
| 可随机 | 背景细节小道具 | 在风格范围内合理自动补全 |
自动补全策略
当用户说「你来补全 / 随机生成 / 先给个 demo」时,模板给出三条行业级自动选择规则:
- 行业自动选背景:化妆品 → 梳妆台;食品 → 餐桌;电子 → 极简办公桌
- 默认保持原图比例:除非用户要求调整,一律不动宽高比
- 默认重新生成阴影:新背景必然带来新光源,阴影默认跟随重做
三、主模板:商品图换背景(含完整参数解析)
模板的主模板是全系列中最通用、最容易复用的一套,可直接复制使用:
以 REFERENCE_0 为基础,保留 {argument name="subject" default="画面中央的白色按压瓶"} 的形态、比例、标签和材质,仅将背景替换为 {argument name="new background" default="清晨阳光下的木质梳妆台,柔光从左侧窗户洒入,远景轻微虚化,背景元素包含一杯水、几片白色花瓣、折叠的米色毛巾"}。 重新生成与新背景一致的阴影与反光,让主体看起来真实地存在于新场景中。 不要修改主体本身的颜色、文字、形状或材质。 渲染风格:{argument name="render style" default="高分辨率商业摄影,颗粒感真实,浅景深,主体清晰,背景自然虚化"}。 输出比例:{argument name="aspect ratio" default="保持原图比例"}。参数槽说明
模板中所有可替换变量都使用{argument name="..." default="..."}语法(规范见 prompt-writing.md 第七节「参数写法规范」):
| 参数名 | 默认值 | 职责 |
|---|---|---|
subject | 画面中央的白色按压瓶 | 必须保留的主体:形态 / 比例 / 标签 / 材质四项全部锁定 |
new background | 清晨阳光下的木质梳妆台… | 新背景的场景、色调、灯光、前景道具,描述越具体背景细节越可控 |
render style | 高分辨率商业摄影… | 渲染风格,可默认;浅景深保证主体清晰、背景自然虚化 |
aspect ratio | 保持原图比例 | 输出比例,默认不动 |
这段 prompt 的精髓在于用「保留清单」+「替换清单」把编辑范围约束到最小:保留句锁定主体的形态、比例、标签、材质,替换句只授权背景变化,最后再用一句「不要修改主体本身的颜色、文字、形状或材质」兜底,防止模型顺手改动产品本身。
四、三种变体模板
变体在主模板结构上只调整少量字段,覆盖最常见的三类需求。
变体 1:人像换棚景
适用于把杂乱背景换成干净棚景的人像场景:
以 REFERENCE_0 为基础,保留 {argument name="subject" default="画面中的人物"} 的姿势、表情、穿着与五官,仅将背景替换为 {argument name="studio backdrop" default="中性灰背景纸"}。 重新生成与新背景一致的柔光阴影;不要改变人物形象、肤色、服装颜色。 渲染风格:{argument name="render style" default="棚拍人像摄影,柔光,自然肤质"}。与主模板相比,这里把「保留项」升级为人的姿势、表情、穿着与五官四项身份要素,并把「不要改变」明确扩展到人物形象、肤色、服装颜色——人像换背景最容易翻车的就是肤色漂移和五官变形。
变体 2:商品图换户外场景
以 REFERENCE_0 为基础,保留 {argument name="subject" default="画面中央的产品"},将背景替换为 {argument name="outdoor scene" default="海边木栈道,黄昏暖光,远处海浪虚化"}。 保留产品所有标签与材质细节;为产品重新生成与户外光线方向一致的阴影。 不要让产品颜色因光线偏移过强(保持品牌色)。户外场景的灯光往往比棚内复杂,因此本变体额外加了一条品牌色保护指令:「不要让产品颜色因光线偏移过强(保持品牌色)」——这是商品跨场景替换时的常见防翻车条款。
变体 3:自动补全模式
以 REFERENCE_0 为基础,保留主体;自动选择最适合该主体的“干净影棚 / 自然场景 / 极简室内”三种背景之一并替换。 保持原图比例;为主体重新生成自然阴影。当用户没指定具体背景时,模型在三个候选背景类型中自动选择最匹配的一个,同时锁定「保持原图比例 + 重新生成自然阴影」两个默认行为。
五、避免事项(编辑红线)
模板在末尾总结了最容易失败的五条红线,实战中应作为 prompt 约束与验收清单双重使用:
- 不要修改主体本身(除非用户明确允许)
- 不要让光线方向与主体原本受光不一致——新背景的灯位应与主体原有受光方向逻辑自洽
- 不要让背景元素太多分散注意力——背景服务于主体,忌堆砌
- 不要让主体边缘出现明显抠图痕迹——白边、锯齿、羽化不均都要避免
- 不要修改主体上的文字 / 标签——品牌信息是硬约束
六、源码级实现:edit.js 如何执行背景替换
背景替换任务的落地脚本是 scripts/edit.js,它只负责一件事:把原图 + 渲染好的 prompt 组装成 multipart form-data,POST 到 OpenAI 兼容的图片编辑接口,并把返回图片落盘。
完整 CLI 参数表
从printHelp()与parseCli()(edit.js)可以看到全部可用参数:
| 参数 | 必需 | 说明 |
|---|---|---|
--image <path> | ✅ 必需 | 原图路径,即模板中的REFERENCE_0 |
--mask <path> | 可选 | 蒙版路径;背景替换通常不需要,局部编辑才用 |
--prompt <text> | 二选一 | 直接传入 prompt 文本 |
--promptfile <path> | 二选一 | 从文件加载 prompt |
--prompt-output <path> | 可选 | 保存最终 prompt 到指定文件 |
--output <path> | 可选 | 输出路径,默认garden-gpt-image-2/image/<slug>-<timestamp>.png |
--model <name> | 可选 | 模型覆盖,默认gpt-image-2 |
--size <WxH\|auto> | 可选 | 输出尺寸 |
--n <count> | 可选 | 生成数量 |
--quality <level> | 可选 | auto/high/medium/low |
--background <mode> | 可选 | transparent/opaque/auto |
--input-fidelity <level> | 可选 | low/high |
--output-format <format> | 可选 | png/jpeg/webp |
--output-compression <0-100> | 可选 | jpeg/webp 压缩比 |
--moderation <level> | 可选 | low/auto |
--json | 可选 | 输出结构化结果 |
基础用法
以「商品图换背景」为例,Mode A 下的典型命令:
node skills/gpt-image-2/scripts/edit.js \ --image assets/source.png \ --prompt "以 REFERENCE_0 为基础,保留画面中央白色按压瓶的形态、比例、标签和材质,仅将背景替换为清晨阳光下的木质梳妆台……" \ --output out/edit.png也可以用--promptfile配合模板渲染好的 prompt 文件:
node skills/gpt-image-2/scripts/edit.js \ --image assets/source.png \ --promptfile garden-gpt-image-2/prompt/background-replacement-20260424-153045.md底层调用链
从源码看,一次背景替换请求的完整数据流是:
- 配置解析:
parseCli()解析所有 CLI 参数,--image缺失直接抛错(edit.js) - 环境变量加载:
loadAmbientEnv()按<cwd>/.env→<cwd>/.gateway.env→~/.gateway.env顺序读取(shared.js) - 文件校验:
ensureFilesExist()确认原图存在(shared.js) - prompt 输入:
readPromptInput()支持--prompt或--promptfile二选一(shared.js) - 组装表单:
buildForm()把图片以Blob形式 append 进FormData,并附加prompt、model、size、quality、background、input_fidelity、output_format等字段(edit.js)——注意编辑脚本使用 multipart form data,而非生成脚本的 JSON body,这是 SKILL.md 明确区分的重要约束 - 请求 URL:
buildRequestUrl()拼接为${OPENAI_BASE_URL}/images/edits(edit.js) - 响应解析:
extractGeneratedBytes()优先解析data[0].b64_json,兼容data[0].url下载(shared.js) - 落盘:prompt 存为
.md,图片存为.png,目录不存在自动创建(shared.js 与 shared.js)
默认命名与落盘
未指定--output时,图片默认落在garden-gpt-image-2/image/,prompt 默认落在garden-gpt-image-2/prompt/,文件名由 prompt 前 8 个词 slug 化并附加时间戳生成(edit.js),格式为<task-slug>-<timestamp>.png,例如:
garden-gpt-image-2/prompt/background-replacement-20260424-153045.md garden-gpt-image-2/image/background-replacement-20260424-153045.png七、运行模式:先判定再执行
背景替换脚本只在Mode A(Garden 本地生图)下直接调用。任务第一步永远是运行模式探测:
node skills/gpt-image-2/scripts/check-mode.js # 拿结构化结果: node skills/gpt-image-2/scripts/check-mode.js --json探测逻辑见 check-mode.js:当ENABLE_GARDEN_IMAGEGEN为真值(1/true/yes/on/y)且存在OPENAI_API_KEY时进入 Mode A,可以调用edit.js出图落盘;否则降级为 Mode B(把渲染好的 prompt 交给宿主自带图像工具)或 Mode C(只输出 prompt 供用户拿去其它工具执行)。三种模式下,模板文件都照常使用,区别只在第 7 步之后「如何出图」。
八、真实案例对照:JSON 模板如何驱动背景替换
仓库的案例库website/gpt-image2-website/public/case/editing-workflows/background-replacement/提供了两个可对照的真实案例数据,展示了本模板在「人像换夜景」和「商品换沙滩」两类任务上的完整 JSON 结构:
案例 1:人像 → 时代广场夜景(1.json)
{ "type": "背景替换工作流", "goal": "以 REFERENCE_0 为输入,保留人物与穿搭不变,仅将背景换成纽约时代广场夜晚实景……", "reference_0": { "assumed_input": "……紫金色 23 号无袖球衣……白天户外篮球场围栏与绿树作为背景……" }, "edit": { "preserve": "人物的五官、表情、身体姿势、紫金色 23 号球衣的图案与数字……", "replace_only": "背景整体替换为时代广场夜晚:……以蓝紫冷色霓虹为主、夹杂暖色广告面光源", "lighting_rematch": "按新背景主光方向……重新生成与夜景一致的边缘轮廓光与球面料微反光……", "shadow_reflection": "在脚下路面生成柔和接触阴影,与时代广场湿路面微弱倒影衔接……" }, "constraints": { "do_not": ["修改球衣号码、队名区域文字或队标形状", "改变人物脸形、表情或增删身体配件"], "must": ["人物边缘无抠图白边与锯齿"] }, "render_style": "高分辨率运动人像摄影,夜景城市氛围真实……", "aspect_ratio": "保持原图比例" }案例 2:商品 → 黄昏沙滩(2.json)
{ "type": "背景替换工作流", "goal": "以 REFERENCE_0 为输入,保留耳机与盒体产品级还原,仅将背景从纯白无缝纸换成黄昏海边沙滩……", "edit": { "preserve": "白色 AirPods Pro 3、充电盒、金属铰链、USB-C 口与盒内耳机形态……", "replace_only": "背景替换为日落时分的暖色沙滩:近景细腻沙纹与贝壳,中景退潮水线柔焦,远处海平线橘粉渐变天空……", "lighting_rematch": "主光来自画面左侧低角度夕阳金橙色,在白色塑料上形成长条柔和高光……", "shadow_reflection": "替换为贴近沙面与潮湿沙滩的柔边接触阴影……" }, "constraints": { "do_not": ["修改产品颜色、开盖角度、耳机数量或机身上的小型监管文字与 logo 形状"], "must": ["白盒与耳机仍是官方白,而非奶油灰"] }, "render_style": "高分辨率商业产品摄影,颗粒感真实、浅景深、主体清晰、背景自然虚化", "aspect_ratio": "保持原图比例 1:1" }对照可见,两个真实案例完整继承了模板的三段式核心结构:preserve(保留清单)+replace_only(替换清单)+lighting_rematch/shadow_reflection(灯光与阴影重生成),外加constraints.do_not/must红线约束。这正是 prompt-writing.md 所定义的模板设计方法论——「主体 / 场景 / 布局 / 风格 / 约束」拆字段,再标记必问 / 可默认 / 可随机——在背景替换场景中的具体落地。
九、实战建议总结
结合模板与源码,一条可复用的背景替换工作流可以收敛为五步:
- 判边界:确认任务是「只换背景」(主体不动),否则切到局部替换 / 去除 / 精修模板
- 补关键信息:按五级提问顺序,优先确认主体描述与新背景(场景 / 色调 / 灯光)
- 渲染 prompt:套用主模板或变体,用
{argument ...}填槽;用户没给的就走自动补全策略 - 执行:Mode A 下调用
node scripts/edit.js --image <原图> --promptfile <渲染好的prompt>;Mode B / C 下把 prompt 交给宿主图像工具或直接交付 - 验收:对照「避免事项」五条红线检查——主体未变、光线自洽、背景不抢戏、边缘无抠图痕、文字标签未改
这套「结构化模板 + 脚本落地」的组合,正是 garden-skills 中 gpt-image-2 技能把提示词工程从「自由发挥」升级为「可复用、可校验、可归档」的关键设计。
- 人工智能
- AI 技能/插件
- 提示工程
【免费下载链接】garden-skills
ConardLi's open-source Skills collection, featuring web design, knowledge retrieval, image generation, and more.
相关推荐
Qwen3.6-27B-MTP-UD-GGUF完全指南:从零开始构建支持MTP的llama.cpp
Qwen3.6 27B MTP UD GGUF完全指南:从零开始构建支持MTP的llama.cpp 想要体验 Qwen3.6 27B MTP UD GGUF 带
香山RISC-V处理器面积基准深度分析:多工艺节点架构评估与优化策略
香山RISC V处理器面积基准深度分析:多工艺节点架构评估与优化策略 香山处理器作为开源高性能RISC V架构的典型代表,其面积效率在不同工艺节点下的表现直接关
硬件开发指令集高性能计算BackgroundMattingV2高级应用:动态背景替换与多场景切换技术
BackgroundMattingV2高级应用:动态背景替换与多场景切换技术 你是否在视频会议中需要频繁切换虚拟背景?是否在直播时希望实现无缝场景转换?Back
人工智能计算机视觉深度学习图像处理视频处理
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考