正在打开页面…
正在加载内容,请稍候。
正在打开页面…
正在加载内容,请稍候。
Nano Banana 2 API 使用 generateContent 生成活动封面或修改商品背景。遍历响应中的最终 inlineData 图像,跳过思考图,并检查返回图片与请求分辨率。
全球顶尖大模型 · 一站式接入
| 参考价格 | 单位 |
|---|---|
| $0.024338 | 基准价 |
仅展示当前最低基础单价,实际扣费以请求时的价格和后台记录为准。价格使用 5 分钟缓存;页面读取于 2026-11-06 14:19:31 UTC。
基础单价不能直接换算成固定每张图价格。输入量、输出尺寸和质量会影响总费用。
给出主题、画面主体和需要保留的文字,生成不同构图候选。先检查标题、数字与细节,再导出用于实际发布。
上传一张商品参考图,指定背景、光线和构图。把商品外观作为验收重点,逐项检查颜色、标签和比例是否变化。
把设计方向写成明确提示词,先生成低分辨率草稿,再选择需要提高尺寸的版本。记录每次修改和费用,方便在应用中复用。
gemini-3.1-flash-image官方规格核对于 2026-10-06。具体通道开放的参数、长度与限流,请按当前令牌核对。
Nano Banana 2 是此型号的官方名称,不是 flash-lite-image。
本文先展示文字与 PNG 参考图;其他素材透传需按通道核对。
图片也占用 token;通道上限和计费档位另行核对。
实际宽高由比例和档位共同决定,4K 不是所有图片都为 4096×4096。
使用 Gemini 原生 contents / parts 格式,不套用 OpenAI Images 请求。
示例使用 TEXT、IMAGE 和 imageSize / aspectRatio;以通道支持为准。
示例读取本地 reference.png,MIME 类型应与文件内容一致。
检查 MIME 类型并解码保存最终图片,不把 JSON 响应直接当图像文件。
接口地址取自当前模型目录;使用前确认令牌支持相应协议。
在本地设置 API Key 环境变量,再选择所需示例。收到有效结果后,到控制台核对用量与费用。
设置 tokenba_API_KEY 后运行。先使用 1K 小样,curl 保存响应 JSON,随后 Python 按返回 MIME 类型解码图片;执行会产生 API 用量。
curl --fail-with-body --max-time 180 \
https://api.apizt.com/v1beta/models/gemini-3.1-flash-image:generateContent \
-H "Authorization: Bearer $tokenba_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{
"role": "user",
"parts": [
{
"text": "生成一张咖啡店周末活动封面:奶油色桌面上有一杯冰拿铁和一小束橙色花,柔和自然光。画面上方只保留中文标题“周末咖啡”,不要价格、品牌标志或额外文字。正方形构图,适合手机阅读。"
}
]
}
],
"generationConfig": {
"responseModalities": [
"TEXT",
"IMAGE"
],
"imageConfig": {
"imageSize": "1K",
"aspectRatio": "1:1"
}
}
}' \
-o nano-banana-2-generation-response.json
python3 - <<'PY'
import base64, json
from pathlib import Path
result = json.loads(Path("nano-banana-2-generation-response.json").read_text())
saved = 0
extensions = {"image/png": "png", "image/jpeg": "jpg", "image/webp": "webp"}
for candidate in result.get("candidates", []):
for part in candidate.get("content", {}).get("parts", []):
image = part.get("inlineData")
if image and not part.get("thought"):
extension = extensions.get(image.get("mimeType"))
if not extension:
raise ValueError("Unexpected image MIME type")
saved += 1
path = Path(f"nano-banana-2-generation-{saved}.{extension}")
path.write_bytes(base64.b64decode(image["data"], validate=True))
print(path)
if not saved:
raise RuntimeError("No final image returned; check response JSON and finishReason")
print(result.get("usageMetadata"))
PY将自己的 PNG 商品图放到 reference.png。此 Python 示例使用标准库发送单轮 generateContent,不使用 Google File API 或 Interactions;先检查主体一致性。
import base64, json, os
from pathlib import Path
from urllib.request import Request, urlopen
reference = base64.b64encode(Path("reference.png").read_bytes()).decode("ascii")
payload = {
"contents": [{"role": "user", "parts": [
{"text": "保留参考图中商品的颜色、形状、标签与数量,把背景更换为浅米色室内桌面,并添加柔和侧光。不要新增文字,不改变商品品牌元素。输出一张正方形商品场景图。"},
{"inlineData": {"mimeType": "image/png", "data": reference}},
]}],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"],
"imageConfig": {"imageSize": "1K", "aspectRatio": "1:1"},
},
}
request = Request(
"https://api.apizt.com/v1beta/models/gemini-3.1-flash-image:generateContent",
data=json.dumps(payload).encode("utf-8"),
headers={
"Authorization": "Bearer " + os.environ["tokenba_API_KEY"],
"Content-Type": "application/json",
},
method="POST",
)
with urlopen(request, timeout=180) as response:
result = json.load(response)
Path("nano-banana-2-edit-response.json").write_text(json.dumps(result), encoding="utf-8")
saved = 0
extensions = {"image/png": "png", "image/jpeg": "jpg", "image/webp": "webp"}
for candidate in result.get("candidates", []):
for part in candidate.get("content", {}).get("parts", []):
image = part.get("inlineData")
if image and not part.get("thought"):
extension = extensions.get(image.get("mimeType"))
if not extension:
raise ValueError("Unexpected image MIME type")
saved += 1
path = Path(f"nano-banana-2-edit-{saved}.{extension}")
path.write_bytes(base64.b64decode(image["data"], validate=True))
print(path)
if not saved:
raise RuntimeError("No final image returned; check response JSON and finishReason")
print(result.get("usageMetadata"))此页面对应 gemini-3.1-flash-image。请求采用目录列出的 generateContent 路径与 Bearer Key;不要发送到 /v1/images/generations,也不要把 Interactions 示例中的 input、response_format 字段直接复制进来。
Google 官方规格未为此型号开放这些能力。原生搜索虽然列为支持,当前网关是否开放仍需验证;先用不含工具的生成与编辑请求完成验收。
HTTP 成功也可能没有最终图片,需检查 candidates、finishReason 和 inlineData;思考中的临时图像不能作为交付结果。分辨率、参考输入及通道档位会影响费用,最低基准报价不能视为所有尺寸的固定每张价。
本页使用的准确 model ID 是 gemini-3.1-flash-image。按下方示例调用 Gemini generateContent 路径,使用 Bearer Key,并保留 parts 与 generationConfig 格式。不能直接沿用 OpenAI Images 的请求体和结果解析。
此页面对应 gemini-3.1-flash-image。请求采用目录列出的 generateContent 路径与 Bearer Key;不要发送到 /v1/images/generations,也不要把 Interactions 示例中的 input、response_format 字段直接复制进来。