news 2026/10/2 15:46:15

背景替换工作流全指南:用 garden-skills 的 gpt-image-2 模板与 edit.js 完成商品、人像、户外场景换背景

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
背景替换工作流全指南:用 garden-skills 的 gpt-image-2 模板与 edit.js 完成商品、人像、户外场景换背景
  • 人工智能
  • AI 技能/插件
  • 提示工程

【免费下载链接】garden-skills

ConardLi's open-source Skills collection, featuring web design, knowledge retrieval, image generation, and more.

项目地址:https://gitcode.com/GitHub_Trending/we/garden-skills
点击查看免费下载

本篇文章是 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 定义的「精准提问、少量提问、围绕模板关键字段」原则,为背景替换任务规定了五级提问优先级:

  1. 原图描述 / 主体是什么——决定保留边界,缺失会让模型不知道「哪些不能动」
  2. 新背景:场景 / 色调 / 灯光——决定替换目标,是本任务的核心输入
  3. 是否保留原图灯光方向——影响后续是否要求「重新布光」
  4. 是否需要重新阴影 / 反光——影响 prompt 中是否追加阴影重生成指令
  5. 输出比例(保持原图 / 调整)——影响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 约束与验收清单双重使用:

  1. 不要修改主体本身(除非用户明确允许)
  2. 不要让光线方向与主体原本受光不一致——新背景的灯位应与主体原有受光方向逻辑自洽
  3. 不要让背景元素太多分散注意力——背景服务于主体,忌堆砌
  4. 不要让主体边缘出现明显抠图痕迹——白边、锯齿、羽化不均都要避免
  5. 不要修改主体上的文字 / 标签——品牌信息是硬约束

六、源码级实现: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

底层调用链

从源码看,一次背景替换请求的完整数据流是:

  1. 配置解析:parseCli()解析所有 CLI 参数,--image缺失直接抛错(edit.js)
  2. 环境变量加载:loadAmbientEnv()按<cwd>/.env→<cwd>/.gateway.env→~/.gateway.env顺序读取(shared.js)
  3. 文件校验:ensureFilesExist()确认原图存在(shared.js)
  4. prompt 输入:readPromptInput()支持--prompt或--promptfile二选一(shared.js)
  5. 组装表单:buildForm()把图片以Blob形式 append 进FormData,并附加prompt、model、size、quality、background、input_fidelity、output_format等字段(edit.js)——注意编辑脚本使用 multipart form data,而非生成脚本的 JSON body,这是 SKILL.md 明确区分的重要约束
  6. 请求 URL:buildRequestUrl()拼接为${OPENAI_BASE_URL}/images/edits(edit.js)
  7. 响应解析:extractGeneratedBytes()优先解析data[0].b64_json,兼容data[0].url下载(shared.js)
  8. 落盘: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 所定义的模板设计方法论——「主体 / 场景 / 布局 / 风格 / 约束」拆字段,再标记必问 / 可默认 / 可随机——在背景替换场景中的具体落地。

九、实战建议总结

结合模板与源码,一条可复用的背景替换工作流可以收敛为五步:

  1. 判边界:确认任务是「只换背景」(主体不动),否则切到局部替换 / 去除 / 精修模板
  2. 补关键信息:按五级提问顺序,优先确认主体描述与新背景(场景 / 色调 / 灯光)
  3. 渲染 prompt:套用主模板或变体,用{argument ...}填槽;用户没给的就走自动补全策略
  4. 执行:Mode A 下调用node scripts/edit.js --image <原图> --promptfile <渲染好的prompt>;Mode B / C 下把 prompt 交给宿主图像工具或直接交付
  5. 验收:对照「避免事项」五条红线检查——主体未变、光线自洽、背景不抢戏、边缘无抠图痕、文字标签未改

这套「结构化模板 + 脚本落地」的组合,正是 garden-skills 中 gpt-image-2 技能把提示词工程从「自由发挥」升级为「可复用、可校验、可归档」的关键设计。

  • 人工智能
  • AI 技能/插件
  • 提示工程

【免费下载链接】garden-skills

ConardLi's open-source Skills collection, featuring web design, knowledge retrieval, image generation, and more.

项目地址:https://gitcode.com/GitHub_Trending/we/garden-skills
点击查看免费下载

相关推荐

上一篇:Windows 11终极优化指南:使用Win11Debloat让系统重获新生
下一篇:掌握网页媒体资源:开源猫抓插件的专业使用指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/2 15:45:30

UE4网络同步五大核心类:边界、生命周期与复制

刚接触 UE4 网络同步那会儿&#xff0c;我在一个 PlayerController 里写了GetWorld()->GetAuthGameMode()&#xff0c;单机 PIE 里跑得好好的&#xff0c;打包成专用服务器、连上两个客户端之后&#xff0c;其中一个客户端的日志里直接蹦出空指针警告&#xff0c;紧接着就是…

作者头像 李华
网站建设 2026/10/2 15:44:07

共享厨房创业计划书怎么写?从框架搭建到答辩避坑全指南

简介&#xff1a;这份创业计划书围绕“大学生爱创共享厨房”项目展开&#xff0c;属于互联网大学生创新创业大赛创意组的参赛方案&#xff0c;适合高校学生团队备赛或撰写同类共享经济类项目时参考。计划书从项目背景与意义切入&#xff0c;提出基于互联网平台的共享厨房模式&a…

作者头像 李华
网站建设 2026/10/2 15:41:56

掉线重连不一定是网卡问题:RPC协议与域控排查实战

“回购协议掉线重连”&#xff0c;我第一眼看到这个说法也愣了一下。结合你发的场景和关键词&#xff0c;这大概率是“RPC/回话协议”的口语化误写&#xff0c;说的就是远程过程调用、域会话这一类连接断断续续的问题。干运维这么多年&#xff0c;我接到最多的反馈就是“网卡又…

作者头像 李华
网站建设 2026/10/2 15:39:37

最值钱的职场技能——用 TaoToken 搭建 AI 智能体并跑通变现闭环

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华