Skip to main content
POST
图片编辑:根据指令编辑现有图片
右侧的交互式 Playground 支持下拉选择参数。请在 Authorization 中填入你的 API Key(格式:Bearer sk-xxx),即可一键发送请求测试。
场景说明:本页用于「图片编辑」,必须上传一张待编辑的图片(base64 编码)+ 编辑指令。如果只想根据文本生成新图片,请使用 文生图接口
🖥️ 浏览器 Playground 限制(重要)本接口的响应里包含 base64 编码的图片(inlineData.data,数 MB 量级)。受浏览器渲染限制,右侧 Playground 在收到响应后可能弹出 请求时发生错误: unable to complete request ——实际请求已经成功,只是浏览器无法把这么长的 base64 显示出来。推荐做法(小白零踩坑):
  • 直接复制下方”代码示例”中的 Python / Node.js / cURL 到本地运行,代码会自动 base64.b64decode 并把图片保存为本地文件
  • 如要在浏览器里试 Playground,用极小的参考图(< 50KB) 并把 imageSize 设为最小档(如 512 / 1K)。
⚠️ parts 数组结构(重要,多图编辑必看)每个 part 只能是 textinlineData 中的一个,二者不能同时出现在同一个 part 里。这与谷歌官方 gemini-3.1-flash-image-preview 的契约一致。正确:一个 text part(编辑指令)+ N 个 inlineData part(每张图一个):
错误(每个 part 同时塞了 text 和 inlineData,会导致非预期行为):
🖼️ 关于 inlineData.data 字段本接口是 JSON 格式(非 multipart 文件上传),所以 Playground 无法直接选择本地文件,需要先把图片转成 Base64 字符串再粘贴到 data 输入框。一行命令转换 + 自动复制到剪贴板
执行后直接在 Playground 的 data 字段 Cmd+V / Ctrl+V 粘贴即可。同时记得把 mimeType 切换为对应的 image/jpegimage/png建议:测试用小图(< 200KB),避免 base64 字符串过长导致浏览器卡顿。频繁测试图片编辑更推荐用下方代码示例直接在本地运行。

代码示例

Python

Node.js

cURL

多图编辑示例

把多张图作为输入合成或对比时,只用一个 text part(编辑指令),后面追加多个 inlineData part(每张图一个)。

Python(多图)

cURL(多图,对齐谷歌官方格式)

参数说明速查

多轮对话式编辑

Nano Banana 2(gemini-3.1-flash-image-preview)支持真正的对话式多轮编辑:把模型每一轮产出的图片,作为 role: "model"inlineData 追加回 contents,再发下一条 user 指令。模型会基于完整对话历史继续修改并累积效果(例如先改沙发颜色、再加配饰,前一步的改动会保留)。
这与”逆向”图像模型不同:原生 Gemini 格式会真正读取对话历史里 model 角色的图片。要保持跨轮一致性、逐步精调,推荐用下面这种对话历史回填的写法。
从已有图片开始多轮:第一轮的 user 消息里放 inlineData(你自己的图)+ 指令即可编辑现有照片,之后每轮照样把模型产出回填进 contents
两种多轮写法
  • 对话历史回填(上面,推荐)contents 保留 user/model 交替历史,跨轮累积修改、画面更稳。
  • 重新喂图(简化版):每轮只发单条 user 消息(text + 上一张图的 inlineData),做单步编辑也可以,但不携带更早的上下文。

授权

Authorization
string
header
必填

在 API易控制台获取的 API Key

请求体

application/json
contents
object[]
必填

内容数组,包含编辑指令和待编辑的图片

generationConfig
object
必填

响应

成功生成图片

candidates
object[]

生成结果数组

usageMetadata
object