# Nano Banana 改图与多图融合:inlineData 与 /v1/images/edits 写法 Source: https://ofox.ai/zh/docs/develop/models/nano-banana/image-edit 模型 ID 与接口选择见 [Nano Banana 概览](https://ofox.ai/zh/docs/develop/models/nano-banana)。 **要点**:原生接口将图片与文字放入同一个 `parts`;OpenAI 兼容接口使用 `/v1/images/edits`。 **Python(原生)** ```python filename="edit.py" from google import genai from google.genai import types client = genai.Client( api_key="YOUR_OFOX_API_KEY", http_options={"api_version": "v1beta", "base_url": "https://api.ofox.ai/gemini"}, ) with open("apple.png", "rb") as f: image = types.Part.from_bytes(data=f.read(), mime_type="image/png") resp = client.models.generate_content( model="google/gemini-3.1-flash-image", contents=["把苹果改成绿色,其他保持不变", image], config=types.GenerateContentConfig( response_modalities=["IMAGE"], image_config=types.ImageConfig(aspect_ratio="1:1", image_size="1K"), ), ) for part in resp.candidates[0].content.parts: if part.inline_data: with open("apple_green.png", "wb") as f: f.write(part.inline_data.data) ``` **cURL(原生)** ```bash filename="Terminal" # 图片的 base64 很长,直接拼进命令行会报 Argument list too long,先写进文件 base64 < apple.png | tr -d '\n' > apple.b64 jq -n --rawfile img apple.b64 '{ contents: [{ parts: [ { text: "把苹果改成绿色,其他保持不变" }, { inlineData: { mimeType: "image/png", data: $img } } ] }], generationConfig: { responseModalities: ["IMAGE"], imageConfig: { aspectRatio: "1:1", imageSize: "1K" } } }' > body.json curl 'https://api.ofox.ai/gemini/v1beta/models/google/gemini-3.1-flash-image:generateContent' \ --max-time 600 \ -H "x-goog-api-key: $OFOX_API_KEY" \ -H 'Content-Type: application/json' \ -d @body.json \ | jq -r '.candidates[0].content.parts[] | select(.inlineData) | .inlineData.data' | base64 --decode > apple_green.png ``` **cURL(OpenAI 兼容)** ```bash filename="Terminal" curl https://api.ofox.ai/v1/images/edits \ --max-time 600 \ -H "Authorization: Bearer $OFOX_API_KEY" \ -F model=google/gemini-3.1-flash-image \ -F prompt="把苹果改成绿色,其他保持不变" \ -F image=@apple.png \ | jq -r '.data[0].b64_json' | base64 --decode > apple_green.png ``` - **多图融合**:在同一个 `parts` 中放入多个 `inlineData`,并在文字中说明每张图片的作用,例如「将第一张图中的人物置于第二张图的场景中」。 - **保持比例**:改图时同样需要传入 `aspectRatio`,否则输出比例由模型决定,可能与原图不一致。 - **参考图计费**:参考图按输入 token 计费。实测一张 1024×1024 的参考图计 1,120 个 token,见响应中 `promptTokensDetails` 的 `IMAGE` 项。 遇到报错请参阅 [报错排查](https://ofox.ai/zh/docs/develop/models/nano-banana/errors)。