API 手册
NanoBanana 图片
使用 Gemini 图片模型生成、编辑和迭代图片
NanoBanana 使用 Gemini 原生 generateContent 格式处理图片,适合文本生成图片、参考图编辑、多图合成和多轮图片迭代。
接口选择
需要同步拿到 base64 图片时使用本页接口。需要批量生成、后台任务或直接返回图片 URL 时,使用 异步图片任务。
接口概览
| 项目 | 说明 |
|---|---|
| 方法 | POST |
| 路径 | /v1beta/models/{model}:generateContent |
| Base URL | https://cdn.12ai.org |
| 请求格式 | application/json |
| 认证 | ?key=$API_KEY |
| 返回图片 | candidates[].content.parts[].inlineData.data |
推荐模型
| 模型 | 适合场景 |
|---|---|
gemini-3.1-flash-image-preview | 日常图片生成首选,质量、速度和成本比较均衡 |
gemini-3-pro-image-preview | 专业素材、复杂指令、高分辨率输出 |
gemini-2.5-flash-image | 低延迟、大批量、基础图片任务 |
请求体
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
contents | array | 是 | 文本、图片或多轮上下文 |
generationConfig.responseModalities | array | 否 | 建议设为 ["IMAGE"] 或 ["TEXT", "IMAGE"] |
generationConfig.imageConfig.aspectRatio | string | 否 | 宽高比,例如 1:1、16:9、9:16 |
generationConfig.imageConfig.imageSize | string | 否 | 512px、1K、2K、4K,不同模型支持范围不同 |
参数大小写
Gemini 原生格式区分大小写。imageSize 需要写成 1K、2K、4K,不要写成 1k。
文本生成图片
curl "https://cdn.12ai.org/v1beta/models/gemini-3.1-flash-image-preview:generateContent?key=$API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts": [
{"text": "一张极简产品海报,白色背景,玻璃质感水杯,柔和棚拍光"}
]
}],
"generationConfig": {
"responseModalities": ["IMAGE"],
"imageConfig": {
"aspectRatio": "1:1",
"imageSize": "1K"
}
}
}'from google import genai
from google.genai import types
client = genai.Client(
api_key="sk-xxx",
http_options={"base_url": "https://cdn.12ai.org"},
)
response = client.models.generate_content(
model="gemini-3.1-flash-image-preview",
contents="一张极简产品海报,白色背景,玻璃质感水杯,柔和棚拍光",
config=types.GenerateContentConfig(
response_modalities=["IMAGE"],
image_config=types.ImageConfig(
aspect_ratio="1:1",
image_size="1K",
),
),
)
for part in response.candidates[0].content.parts:
if part.inline_data:
part.as_image().save("output.png")
break参考图编辑
参考图需要以 inlineData 传入。Python SDK 可以直接传 PIL.Image,SDK 会处理图片数据。
from google import genai
from PIL import Image
client = genai.Client(
api_key="sk-xxx",
http_options={"base_url": "https://cdn.12ai.org"},
)
response = client.models.generate_content(
model="gemini-3.1-flash-image-preview",
contents=[
Image.open("input.jpg"),
"保留主体和构图,把背景改成雨夜霓虹街道",
],
)
for part in response.candidates[0].content.parts:
if part.inline_data:
part.as_image().save("edited.png")
break多图合成
from google import genai
from google.genai import types
from PIL import Image
client = genai.Client(
api_key="sk-xxx",
http_options={"base_url": "https://cdn.12ai.org"},
)
response = client.models.generate_content(
model="gemini-3-pro-image-preview",
contents=[
Image.open("product.png"),
Image.open("scene.png"),
"把第一张产品自然放入第二张场景中,保持光影一致",
],
config=types.GenerateContentConfig(
response_modalities=["IMAGE"],
image_config=types.ImageConfig(
aspect_ratio="16:9",
image_size="2K",
),
),
)
for part in response.candidates[0].content.parts:
if part.inline_data:
part.as_image().save("composite.png")
break响应结构
图片会以 base64 放在 inlineData.data 中。
{
"candidates": [
{
"content": {
"parts": [
{
"inlineData": {
"mimeType": "image/png",
"data": "<BASE64_IMAGE_DATA>"
}
}
],
"role": "model"
},
"finishReason": "STOP"
}
],
"usageMetadata": {
"promptTokenCount": 20,
"candidatesTokenCount": 1120,
"totalTokenCount": 1140
}
}尺寸与参考图限制
| 模型 | 图片尺寸 | 参考图 |
|---|---|---|
gemini-2.5-flash-image | 约 1K | 最多 3 张 |
gemini-3.1-flash-image-preview | 512px、1K、2K、4K | 最多 14 张 |
gemini-3-pro-image-preview | 1K、2K、4K | 最多 14 张 |
常用宽高比:1:1、3:2、2:3、4:3、3:4、16:9、9:16、21:9。
提示词建议
| 目标 | 写法 |
|---|---|
| 写实图片 | 描述主体、环境、镜头、光线、材质 |
| 产品图 | 明确背景、角度、阴影、品牌文字是否需要出现 |
| 图片编辑 | 说明“保留什么”和“只修改什么” |
| 多图合成 | 指明每张参考图的用途,例如“第一张是产品,第二张是场景” |
常见问题
| 问题 | 处理方式 |
|---|---|
| 没有图片返回 | 检查 responseModalities 是否包含 IMAGE |
| 参数被拒绝 | 检查字段大小写,例如 inlineData、mimeType、imageSize |
| 只想拿 URL | 改用 异步图片任务 |
| 图片数量不稳定 | 图片模型不保证严格按数量返回,批量任务建议用异步接口 |
