GPT Image 2.6 怎么圈选修图?标注、实测与结果检查
制作透明标注图层,通过 Ofox API 圈选修改图片,并检查未选区域是否变化。含两组真实结果、可下载原图、完整请求和本地校验脚本。
用 GPT Image 2.6 圈选修图,需要把原图和一张独立的透明 PNG 标注图提交给图片编辑接口,用 markup 指定标注,再用提示词说明改什么。标注必须与原图对齐。返回图片后要检查整张图:选对对象,不代表没圈到的像素都保持原样。
我们在 2026 年 11 月 6 日通过 Ofox 做了两次真实 API 调用。原图是同一张三只杯子的插画,提示词也完全相同,只把红色椭圆从左侧杯子移到了右侧杯子。两次都修改了对应杯子的颜色,但未选区域的像素也发生了变化。下面提供原文件、实际输出、请求参数和检查脚本,帮助你复现并判断结果能否交付。
先下载示例,不必立即消耗 API 额度
下载圈选修图完整示例包。包内有原图 PNG 与 SVG、左右两个透明标注图层、两张实际生成图、提示词、请求记录及三个 Python 辅助脚本。下载和本地查看不会调用 API。
原图是我们专门绘制的合成测试插画,不是真实客户的产品照片。三只青绿色旅行杯上方分别标有 A、B、C,每只杯子上都有 A-17 标签;标题、背景、底部短线和橙色圆点也用于检查。这样比较容易发现选错对象或文字被改的问题,但不能据此推断人脸、珠宝、真实商品摄影或大批量任务的效果。
本地图片检查需要 Python 3 和 Pillow。解压后,在终端进入示例目录,创建独立环境:
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install Pillow
以上使用 macOS/Linux 的 shell 写法;Windows 用户需使用对应终端的虚拟环境激活命令。解码脚本 decode_edit.py 只依赖 Python 标准库。
先判断:需要标注、蒙版,还是精确合成?
当“指一下”比描述位置更清楚时,可以使用 markup:例如三只相似杯子中的某一只、箭头指向的杂物,或复杂画面中的局部。标注用来表达编辑意图,不是最终画面的一部分。
| 任务要求 | 可以从哪种方法开始 | 需要验收什么 |
|---|---|---|
| 指定多个相似对象中的一个 | 独立标注图层,加明确提示词 | 是否改对对象、标注是否消失、其他对象能否接受 |
| 用透明度蒙版引导区域编辑 | 蒙版工作流 | 蒙版解释是否正确、周边是否变化 |
| 已审核的 logo 或背景必须完全不变 | 保留原始素材,在图片编辑器中合成已接受的修改部分 | 图层边界、对齐与保护区域像素 |
最后一项是工作流建议,本轮两次调用没有实测合成。如果交付要求是“指定区域一个像素都不能变”,不能仅凭生成图看起来相近就通过。相关方法可参考蒙版编辑与产品保护教程。
根据 OpenAI 图片生成文档,Images 编辑接口的 Image 2.5 和 2.6 都支持 markup,并非 2.6 独有。它作用于第一张输入图,不能与 mask 或 prompt_rewriter 同时使用。标注必须是透明 PNG,尺寸与完成方向校正后的原图一致;文档规定两者各不超过 16,777,216 像素,标注文件不超过 50 MB。本教程只使用 1024 × 1024 的原图和很小的标注文件。
制作独立透明图层,别把红圈压进原图
复现示例时,原图使用 source.png,标注使用 markup-left.png;右侧版本是 markup-right.png。包内 SVG 用于编辑源素材,本次没有把 SVG 当作接口输入。
如果要制作自己的标注,可在支持图层的图片编辑器里完成:
- 打开原图,先确定方向。如果编辑器会根据 EXIF 自动旋转照片,先导出方向正确的工作副本,再画标注。
- 在原图上方新建透明图层,不改变画布尺寸。
- 用清楚的圆圈圈出一个目标,尽量避免同时包含无关对象,也不要用过粗的笔画遮挡关键文字。
- 隐藏原图,只导出标注图层为 PNG。保留完整画布,不要裁切到红圈的最小边界。
- 重新叠放原图与标注,检查位置是否对应。原图独立保留,不要用合并了红圈的图片覆盖它。
画在图片里的棋盘格不等于透明,带红圈的白底 PNG 也不等于透明图层。标注必须真的包含透明背景像素。仅看预览像不像透明,不能完成验证。
运行下载包里的本地检查:
python3 preflight.py source.png markup-left.png
我们的文件会返回 passed: true,尺寸 [1024, 1024],alpha 范围 [0, 255]。脚本会拒绝不透明图层、完全空白的透明图层、尺寸不匹配的图层和 JPEG;这四类失败输入均已做过本地测试。检查通过只说明基本尺寸与透明度符合要求,不代表模型权限已开通、圈选位置正确或最终修图成功。
提示词写一个修改动作,再列出需要保留的细节
下面是两次调用使用的完整提示词,也保存在下载包的 prompt.txt 中:
Change only the body of the travel mug inside the red ellipse to warm orange. Keep its dark lid, handle geometry, cream A-17 label and label text unchanged. Keep the other two mugs, their colors, the A B C headings, FIELD / 03 title, background, bottom line and small orange dot unchanged. The red ellipse is an editing annotation: do not draw it in the final image. Keep the original framing and flat illustration style.
它的意思是:只把红色椭圆内的旅行杯杯身改成暖橙色,保留深色杯盖、杯柄几何形状、米白色 A-17 标签及文字;其他两只杯子及其颜色、上方的 A/B/C、FIELD / 03 标题、背景、底部线条和圆点不变;红圈仅用于说明,不应出现在最终图片里;保持原有构图和扁平插画风格。
提示词没有写“左边”或“右边”,位置由标注表达。它也把杯身与杯盖、杯柄、标签分开说明,便于逐项验收。
用于自己的素材时,替换对象、修改动作和保留项。先做一项修改,避免同时要求改色、打光、移动对象和换背景,否则失败后很难判断是哪一步导致。保留项是你提出的要求,不是模型已经做到的证明。
OpenAI 图片提示词指南介绍了局部编辑与模型参数。本轮选择 quality=medium、complexity=low,没有传 input_fidelity。这些是本次小任务的测试条件,不代表所有图片都应该使用同样配置。
通过 Ofox 发送完整请求
本轮实测接口是 https://api.ofox.io/v1/images/edits,Ofox 模型 ID 为 openai/gpt-image-2.6-flare。网关 ID 与模型厂商直接调用时的 ID 不一定相同。替换模型前,请核对 Ofox Images API 文档和账号实际可用的模型。
以下请求会消耗账号额度。先在本地环境中安全设置 OFOX_API_KEY;不要把密钥写进文章、下载包或共享笔记本。
curl --fail-with-body --silent --show-error \
https://api.ofox.io/v1/images/edits \
-H "Authorization: Bearer ${OFOX_API_KEY:?Set OFOX_API_KEY first}" \
-F 'model=openai/gpt-image-2.6-flare' \
-F 'image=@source.png;type=image/png' \
-F 'markup=@markup-left.png;type=image/png' \
-F 'prompt=<prompt.txt' \
-F 'size=1024x1024' \
-F 'quality=medium' \
-F 'complexity=low' \
-F 'n=1' \
-F 'output_format=png' \
-o response.json
让 curl 自动生成 multipart 的内容类型和 boundary,不要手动增加一个缺少 boundary 的 Content-Type: multipart/form-data 请求头。这里 prompt=<prompt.txt 的含义是读取文件内容作为表单字段,不是把文件名当作提示词。
curl 成功退出后,再解码并检查:
python3 decode_edit.py response.json my-left-result.png
python3 inspect_edit.py source.png my-left-result.png
解码器会检查错误响应和 PNG 文件签名,并拒绝覆盖已有输出。检查脚本使用的是这张 1024 × 1024 测试图的固定裁切坐标。换成自己的照片时,应把坐标改成真正需要保护的区域,不要照搬杯子的坐标。
若要复现右侧测试,只把 markup-left.png 改成 markup-right.png,仍然使用 source.png,并为响应与输出换新文件名。每次调用都会计费。不要把第一次生成图作为第二次输入,否则起始图片也变了,就不再是本次的对照方法。
两次真实输出说明了什么?

这是本地实测记录页的真实浏览器截图,使用英文展示实际 API 输出和测量值,不是 Ofox Chat 产品界面。文章头图另为概念插画,不作为实测证据。
| 观察项 | 左侧标注 | 右侧标注 |
|---|---|---|
| 可见修改 | A 杯杯身变橙色 | C 杯杯身变橙色 |
| HTTP 响应 | 200 | 200 |
| 输出 | 1024 × 1024 PNG | 1024 × 1024 PNG |
| 客户端耗时,含网络 | 11.566 秒 | 10.229 秒 |
| 返回的输入/输出 token | 1,286/1,449 | 1,265/1,449 |
| 最终图是否仍有红色标注 | 没有 | 没有 |
每个目标只调用一次,没有重试。两个耗时只是观察值,不是速度评测或服务时延承诺。相同提示词下,返回的输入 token 数不同,本次测试不能解释原因。我们没有测试 Sunburst,也没有进行跨供应商比较。
两张输出中的标签仍然可读,目标杯子也确实改了颜色。不过生成图增加了细微纹理与明暗变化。其他杯子看起来仍是青绿色,RGB 值却不是原图的逐像素副本。请打开完整原图、左侧结果和右侧结果检查,不要只看缩小的截图。
本地脚本没有缩放图片,而是对同位置裁切区域计算 RGB 通道的平均绝对差,通道取值范围为 0–255:
| 裁切区域 | 左侧结果 | 右侧结果 |
|---|---|---|
| 两次都没选中的中间杯身 | 11.866 | 10.925 |
| 标题区域 | 3.141 | 3.890 |
| 底部短线 | 1.853 | 1.527 |
这是像素差异,不是画质分数,也不是通用合格阈值。下载包记录的五个检查区域,包括用于检查目标的杯身区域,都与原图存在差异。结果足以说明本次输出没有在圈外逐像素保持原样,但没有测量所有保护像素,也不能替你判断这些变化是否影响实际用途。
按交付要求验收,而不是看到改色就结束
交付前,分别检查三件事:
- 位置:改的是目标对象,旁边杯子没有被同样改成橙色,标注没有残留。
- 内容:标签、数字、品牌和要求保留的形状是否正确。本例要逐一读出所有
A-17,不能只检查上方的大字母。 - 保留程度:细微纹理和色值变化是否可接受。如果必须完全一致,需要检查保护区域像素,并保留原图图层供后续合成。
把原图、标注、提示词、模型 ID、参数、结果和验收说明一起保存。修改时一次只处理一个原因:圈歪了就调整标注;对象选对但风格变化太大,就收紧保留说明,或换用能保留原始图层的编辑流程。不诊断原因地反复生成,只会让比较变得混乱。
在 Ofox Chat 中尝试图片修改任务
如果更习惯对话操作,可以进入 Ofox Chat,上传原图并清楚说明:改哪个对象、改成什么、哪些细节必须保留。拿到结果后,仍然按位置、文字和保留程度三项验收。
Ofox Chat 已可使用 Image 2.6,但本文两次实测走的是 API。本轮没有验证 Chat 是否提供将独立透明图层转发为 markup 字段的控制项。在对话中上传一张带标注的参考图,不能证明底层使用了同一个字段或相同参数。需要复现本文双文件请求时,请使用上面的 API 步骤。
把文件问题、请求问题和结果问题分开排查
如果错误原文是 Complexity 'low' is not supported,可对照Responses API 的 complexity 报错案例。该案例涉及 Responses 工具与 gpt-image-2,不等于本文 Images 编辑接口上的 Image 2.6 请求也有同一问题;先核对端点和模型。
| 现象 | 优先检查 | 下一步 |
|---|---|---|
| 标注被拒绝或提示尺寸不同 | 图片方向与画布尺寸 | 统一方向,在同尺寸画布上导出,再跑预检查 |
| 白色矩形遮住原图 | 标注透明度 | 隐藏背景和原图,只导出透明绘图层 |
| 看起来有标注,实际文件为空 | alpha 与可见笔画 | 在对比色背景上重新打开;脚本会拒绝全透明文件 |
| 改到了其他对象 | 图层对齐、红圈是否含糊 | 叠放预览,只圈一个目标,保留原始输入 |
| 红圈出现在最终图 | 是否合并进原图、提示是否明确 | 分开提交原图与标注,写明不要渲染标注 |
| 从蒙版示例复制后报错 | 是否同时传了冲突字段 | 从 markup 请求中移除 mask 和 prompt_rewriter |
| 找不到模型或无访问权限 | 精确模型 ID、响应正文 | 核对账号可用模型与凭据,不随机换名字重试 |
| 请求返回成功却没得到 PNG | 错误载荷、图片数据字段 | 解码前检查 JSON,保留响应用于诊断 |
| 其他对象或标签有变化 | 原尺寸对照 | 拒绝不可接受的结果;调整一项说明或用原图保护层合成 |
| 超时或限流 | 状态、响应与账号限制 | 重试前核对前次是否已完成,避免重复产生费用 |
如果目标是生成不同格式,而不是局部修图,可继续阅读 Image 2.6 GIF 教程和 SVG 工作流(英文)。它们有各自的接口限制与文件验收方式。模型访问与计费背景见 Image 2.6 API 说明;上面的 token 记录不能视作固定的每次修图报价。


