🚀 Nano Banana 2 现已上线!
Google 最新一代图像生成模型 Nano Banana 2 (内部代号)正式发布!
🆕 模型名称 :gemini-3-pro-image-preview
🧠 基于 Gemini 3 :更强大的推理能力和图像质量
🔄 无缝切换 :调用方式与旧版完全相同,只需更换模型名
✅ 旧版继续可用 :gemini-2.5-flash-image 仍然稳定服务
📐 高分辨率支持 :支持 1K、2K、4K 三种分辨率(仅 Nano Banana 2)
💰 价格 :Nano Banana $0.025/张(比官网便宜 37.5%),Nano Banana 2 $0.05/张(比官网便宜 79%)
前置要求
配置计费模式
编辑令牌设置,选择以下任一计费模式(两者价格相同):
按量优先 (推荐):优先使用余额计费,余额不足时自动切换。适合大多数用户
按次计费 :每次调用直接扣费。适合预算控制严格的场景
两种模式价格完全相同 ,Nano Banana $0.025/张,Nano Banana 2 $0.05/张,仅扣费方式不同。
如果未设置计费模式,API调用会失败。必须先完成此配置!
模型简介
Google 的 Nano Banana 系列是其图像生成技术的内部代号,目前提供两代模型:
🆕 Nano Banana 2(最新)
模型名称 :gemini-3-pro-image-preview
版本 :Preview(预览版)
技术基础 :基于 Gemini 3 架构,具备更强的推理能力
特点 :最新技术,图像质量和细节表现更优秀
分辨率支持 :支持 1K、2K、4K 三种分辨率
价格 :$0.05/张(比官网 $0.24 便宜 79%)
适用场景 :追求最佳效果、需要高分辨率、愿意尝试新特性的用户
🛡️ Nano Banana(稳定版)
模型名称 :gemini-2.5-flash-image
版本 :Stable(正式版)
技术基础 :基于 Gemini 2.5 架构
特点 :稳定可靠,生产环境推荐
分辨率支持 :固定 1K(1024px),不支持 imageSize 参数
价格 :$0.025/张(比官网 $0.04 便宜 37.5%)
适用场景 :需要稳定性保障的生产环境
💡 名称对照表
Nano Banana = gemini-2.5-flash-image(稳定版)
Nano Banana 2 = gemini-3-pro-image-preview(最新版)
两个模型调用方式完全相同,只需修改 model 参数即可切换!
🌟 共同特性
两代模型均支持以下核心能力:
🎉 核心特性
✅ 支持 OpenAI 兼容格式和 Google 原生格式
🎨 支持自定义纵横比(16:9、9:16 等 10 种比例)
📐 Nano Banana 2 独有 :支持 1K、2K、4K 三种分辨率
⚡ 平均 10 秒生成高质量图片
💰 超值价格:Nano Banana $0.025/张(便宜 37.5%),Nano Banana 2 $0.05/张(便宜 79%)
🔀 两种调用方式
Gemini Flash Image 支持两种调用端点,各有优势:
特性 OpenAI 兼容模式 Google 原生格式 端点 /v1/chat/completions/v1beta/models/gemini-2.5-flash-image:generateContent模型名 gemini-2.5-flash-imageURL 中指定 图片尺寸 固定 1:1 支持 10 种纵横比 分辨率 固定 1K Nano Banana 2 支持 1K/2K/4K,Nano Banana 固定 1K 兼容性 完美兼容 OpenAI SDK 需要原生调用 返回格式 Base64 Base64 使用场景 快速迁移、简单需求 需要自定义尺寸或高分辨率 纵横比支持 ❌ 否 ✅ 21:9, 16:9, 4:3, 3:2, 1:1, 9:16, 3:4, 2:3, 5:4, 4:5
💡 如何选择?
如果只需要正方形(1:1)图片,使用 OpenAI 兼容模式 更简单
如果需要宽屏(16:9)、竖屏(9:16)等特定比例或高分辨率(2K/4K),使用 Google 原生格式
🌟 核心特性
⚡ 极速响应 :平均 10 秒生成,显著快于 OpenAI 系列
💰 超值价格 :Nano Banana $0.025/张(比官网便宜 37.5%),Nano Banana 2 $0.05/张(比官网便宜 79%)
🔄 双重兼容 :支持 OpenAI SDK 和 Google 原生格式
📐 灵活尺寸 :Google 原生格式支持 10 种纵横比
🖼️ 高分辨率 :Nano Banana 2 支持 1K、2K、4K 三种分辨率
🧠 思考模式 :Nano Banana 2 内置推理过程,生成前优化构图(默认启用)
🌐 搜索接地 :Nano Banana 2 支持使用 Google Search 验证事实并生成图片
🎨 多图参考 :支持最多 14 张参考图片(6 张物体 + 5 张人物等)
📦 Base64 输出 :直接返回 base64 编码图片数据,无需二次下载
🎨 Google 技术 :基于 Google 最新图像生成技术,质量出众
📋 Nano Banana 系列对比
同系列模型对比
模型 代号 模型 ID 版本 技术基础 分辨率支持 价格 推荐场景 Nano Banana 2 🆕 最新 gemini-3-pro-image-previewPreview Gemini 3 1K/2K/4K $0.05/张 追求最佳效果、需要高分辨率 Nano Banana 🛡️ 稳定 gemini-2.5-flash-imageStable Gemini 2.5 1K(固定) $0.025/张 生产环境
共同特点 :速度相同(~10秒)、调用方式相同
与其他图像模型对比
模型 模型 ID 计费方式 老张API价格 官方价格 节省比例 分辨率 速度 Nano Banana 2 gemini-3-pro-image-preview按次计费 $0.05/张 $0.24/张 79% 1K/2K/4K ~10秒 Nano Banana gemini-2.5-flash-image按次计费 $0.025/张 $0.04/张 37.5% 1K(固定) ~10秒 GPT-Image-1 gpt-image-1按Token $10输入/$40输出 per M - - - 中等 Flux Kontext Pro flux-kontext-pro按次计费 $0.035/张 $0.04/张 12.5% - 快速 Sora Image sora_image按次计费 $0.01/张 - - 较慢
💰 价格优势详解
Nano Banana 2 :$0.05/张(老张API)vs $0.24/张(官网),便宜 79%
Nano Banana :$0.025/张(老张API)vs $0.04/张(官网),便宜 37.5%
充值优惠 :充值 100 美金 +10% 赠送
汇率优势 :人民币充值更划算
Nano Banana 2 在老张 API 性价比超高!
🚀 快速开始
准备工作
选择计费方式
重要 :必须选择”按次计费”类型,不要选择”按量计费”
保存令牌
复制生成的令牌,格式为 sk-xxxxxx
💰 价格优势详解
Nano Banana 2 :$0.05/张(老张API)vs $0.24/张(官网),便宜 79%
Nano Banana :$0.025/张(老张API)vs $0.04/张(官网),便宜 37.5%
充值优惠 :充值 100 美金 +10% 赠送
汇率优势 :人民币充值更划算
Nano Banana 2 在老张 API 性价比极高!
方式一:OpenAI 兼容模式(1:1 图片)
🔄 模型切换说明
使用 Nano Banana 2 (最新):"model": "gemini-3-pro-image-preview"
使用 Nano Banana (稳定):"model": "gemini-2.5-flash-image"
两个模型调用方式完全相同,只需修改 model 字段即可!
基础示例 - Curl
curl -X POST "https://api.laozhang.ai/v1/chat/completions" \
-H "Authorization: Bearer $API_KEY " \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3-pro-image-preview",
"stream": false,
"messages": [
{
"role": "user",
"content": "a beautiful sunset over mountains"
}
]
}'
💡 模型选择
上面示例使用的是 Nano Banana 2 (gemini-3-pro-image-preview)
如需使用稳定版,将 model 改为 gemini-2.5-flash-image 即可
Python SDK 示例
from openai import OpenAI
import base64
import re
client = OpenAI(
api_key = "sk-YOUR_API_KEY" ,
base_url = "https://api.laozhang.ai/v1"
)
{ /* 模型选择:
- Nano Banana 2 (最新): "gemini-3-pro-image-preview"
- Nano Banana (稳定): "gemini-2.5-flash-image"
*/ }
response = client.chat.completions.create(
model = "gemini-3-pro-image-preview" , # 使用 Nano Banana 2 最新模型
# model="gemini-2.5-flash-image", # 或使用稳定版
messages = [
{
"role" : "user" ,
"content" : "a beautiful sunset over mountains"
}
]
)
# 提取 base64 图片数据
content = response.choices[ 0 ].message.content
match = re.search( r '! \[ . *? \]\( ( data:image/png;base64, . *? ) \) ' , content)
if match:
base64_data = match.group( 1 ).split( ',' )[ 1 ]
image_data = base64.b64decode(base64_data)
with open ( 'output.png' , 'wb' ) as f:
f.write(image_data)
print ( "✅ 图片已保存: output.png" )
方式二:Google 原生格式(支持自定义纵横比)
🔄 模型切换说明
在 Google 原生格式中,模型名称在 URL 路径中指定:
Nano Banana 2 (最新):/v1beta/models/gemini-3-pro-image-preview:generateContent
Nano Banana (稳定):/v1beta/models/gemini-2.5-flash-image:generateContent
支持的纵横比
类型 纵横比选项 横向 21:9(超宽屏), 16:9(宽屏), 4:3, 3:2 正方形 1:1 纵向 9:16(竖屏), 3:4, 2:3 其他 5:4, 4:5
支持的分辨率
💡 分辨率支持说明
Nano Banana 2 (gemini-3-pro-image-preview):支持 1K、2K、4K 三种分辨率
Nano Banana (gemini-2.5-flash-image):固定 1K(1024px),不支持 imageSize 参数
Nano Banana 2 分辨率选项 :
纵横比 1K 分辨率 2K 分辨率 4K 分辨率 1:1 1024×1024 2048×2048 4096×4096 16:9 1376×768 2752×1536 5504×3072 9:16 768×1376 1536×2752 3072×5504 4:3 1200×896 2400×1792 4800×3584 3:4 896×1200 1792×2400 3584×4800 21:9 1584×672 3168×1344 6336×2688 3:2 1248×832 2496×1664 4992×3328 2:3 832×1248 1664×2496 3328×4992 5:4 1152×896 2304×1792 4608×3584 4:5 896×1152 1792×2304 3584×4608
💡 分辨率选择建议
1K :适合网页展示、社交媒体、快速预览
2K :适合高质量打印、专业展示
4K :适合大型打印、专业设计、极致细节
完整 Curl 示例(文生图 4K)
#!/bin/bash
# 1. 设置 API 密钥
export API_KEY = "sk-YOUR_API_KEY"
# 2. 发送请求(使用 Nano Banana 2 生成 4K 图片)
curl -s -X POST "https://api.laozhang.ai/v1beta/models/gemini-3-pro-image-preview:generateContent" \
-H "Authorization: Bearer $API_KEY " \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts": [
{"text": "A futuristic city skyline at sunset, high detailed, 4k"}
]
}],
"generationConfig": {
"responseModalities": ["IMAGE"],
"imageConfig": {
"aspectRatio": "16:9",
"imageSize": "4K"
}
}
}' \
| jq -r '.candidates[0].content.parts[0].inlineData.data' \
| base64 --decode > output_4k.png
echo "✅ 图片已保存: output_4k.png"
快速开始 Curl 示例
# 使用 Nano Banana(稳定版,1K)
curl -s -X POST "https://api.laozhang.ai/v1beta/models/gemini-2.5-flash-image:generateContent" \
-H "Authorization: Bearer $API_KEY " \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts": [{"text": "a beautiful sunset over mountains"}]
}],
"generationConfig": {
"responseModalities": ["IMAGE"],
"imageConfig": {"aspectRatio": "16:9"}
}
}' | jq -r '.candidates[0].content.parts[0].inlineData.data' | base64 --decode > output.png
💡 模型切换
上面使用的是稳定版 gemini-2.5-flash-image(固定 1K)
如需使用预览版 gemini-3-pro-image-preview(支持 4K),修改 URL 并添加 "imageSize": "4K" 参数
Python 代码示例
💡 三个示例递进关系
示例1生成图 → 示例2用它变换风格 → 示例3融合前两张图。这样逻辑更清晰!
import requests
import base64
# ========== 配置 ==========
API_KEY = "sk-YOUR_API_KEY"
# Nano Banana 2 (支持 4K)
API_URL = "https://api.laozhang.ai/v1beta/models/gemini-3-pro-image-preview:generateContent"
PROMPT = "一只可爱的橘猫"
ASPECT_RATIO = "1:1"
IMAGE_SIZE = "2K" # Nano Banana 2 支持: 1K, 2K, 4K
# Nano Banana (固定 1K) - 取消注释以使用
# API_URL = "https://api.laozhang.ai/v1beta/models/gemini-2.5-flash-image:generateContent"
# PROMPT = "一只可爱的橘猫"
# ASPECT_RATIO = "1:1"
# IMAGE_SIZE = None
# ============================
headers = { "Authorization" : f "Bearer { API_KEY } " , "Content-Type" : "application/json" }
payload = {
"contents" : [{ "parts" : [{ "text" : PROMPT }]}],
"generationConfig" : {
"responseModalities" : [ "IMAGE" ],
"imageConfig" : { "aspectRatio" : ASPECT_RATIO }
}
}
# 如果是 Nano Banana 2,添加分辨率参数
if IMAGE_SIZE :
payload[ "generationConfig" ][ "imageConfig" ][ "imageSize" ] = IMAGE_SIZE
response = requests.post( API_URL , headers = headers, json = payload, timeout = 180 )
result = response.json()
# 保存图片
image_data = result[ "candidates" ][ 0 ][ "content" ][ "parts" ][ 0 ][ "inlineData" ][ "data" ]
with open ( "output.png" , "wb" ) as f:
f.write(base64.b64decode(image_data))
print ( "✅ 图片已保存: output.png" )
import requests
import base64
# ========== 配置 ==========
API_KEY = "sk-YOUR_API_KEY"
API_URL = "https://api.laozhang.ai/v1beta/models/gemini-3-pro-image-preview:generateContent"
INPUT_IMAGE = "output.png" # 使用示例1生成的图片
PROMPT = "把这张图变成梵高星空风格的油画"
ASPECT_RATIO = "1:1"
IMAGE_SIZE = "2K" # Nano Banana 2: 1K, 2K, 4K
# ============================
# 读取并编码图片
with open ( INPUT_IMAGE , "rb" ) as f:
image_b64 = base64.b64encode(f.read()).decode( "utf-8" )
headers = { "Authorization" : f "Bearer { API_KEY } " , "Content-Type" : "application/json" }
payload = {
"contents" : [{
"parts" : [
{ "text" : PROMPT },
{ "inline_data" : { "mime_type" : "image/jpeg" , "data" : image_b64}}
]
}],
"generationConfig" : {
"responseModalities" : [ "IMAGE" ],
"imageConfig" : {
"aspectRatio" : ASPECT_RATIO ,
"imageSize" : IMAGE_SIZE
}
}
}
response = requests.post( API_URL , headers = headers, json = payload, timeout = 180 )
result = response.json()
# 保存图片
output_data = result[ "candidates" ][ 0 ][ "content" ][ "parts" ][ 0 ][ "inlineData" ][ "data" ]
with open ( "output_styled.png" , "wb" ) as f:
f.write(base64.b64decode(output_data))
print ( "✅ 图片已保存: output_styled.png" )
示例 3:多图混合 → 用第一张和第二张生成第三张图
import requests
import base64
# ========== 配置 ==========
API_KEY = "sk-YOUR_API_KEY"
API_URL = "https://api.laozhang.ai/v1beta/models/gemini-3-pro-image-preview:generateContent"
# 使用前面生成的两张图(示例1和示例2的输出)
IMAGES = [ "output.png" , "output_styled.png" ]
PROMPT = "将这两张图融合成一个艺术作品"
ASPECT_RATIO = "16:9"
IMAGE_SIZE = "2K" # Nano Banana 2: 1K, 2K, 4K
# ============================
# 构建 parts: 文本 + 多张图片
parts = [{ "text" : PROMPT }]
for img_path in IMAGES :
with open (img_path, "rb" ) as f:
img_b64 = base64.b64encode(f.read()).decode( "utf-8" )
parts.append({ "inline_data" : { "mime_type" : "image/png" , "data" : img_b64}})
headers = { "Authorization" : f "Bearer { API_KEY } " , "Content-Type" : "application/json" }
payload = {
"contents" : [{ "parts" : parts}],
"generationConfig" : {
"responseModalities" : [ "IMAGE" ],
"imageConfig" : {
"aspectRatio" : ASPECT_RATIO ,
"imageSize" : IMAGE_SIZE
}
}
}
response = requests.post( API_URL , headers = headers, json = payload, timeout = 180 )
result = response.json()
# 保存图片
output_data = result[ "candidates" ][ 0 ][ "content" ][ "parts" ][ 0 ][ "inlineData" ][ "data" ]
with open ( "output_mixed.png" , "wb" ) as f:
f.write(base64.b64decode(output_data))
print ( "✅ 图片已保存: output_mixed.png" )
💡 完整演示脚本 想要一个串起来的完整脚本?我们准备了一个包含所有三个场景的完整 Python 脚本:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Gemini Image Generation - 完整演示脚本
包含三个场景:文生图、单图生图、多图混合
"""
import requests
import base64
import os
from datetime import datetime
# ========== 配置区 ==========
API_KEY = "sk-YOUR_API_KEY"
# 选择模型
USE_NANO_BANANA_2 = True # True=Nano Banana 2 (4K), False=Nano Banana (1K)
if USE_NANO_BANANA_2 :
API_URL = "https://api.laozhang.ai/v1beta/models/gemini-3-pro-image-preview:generateContent"
else :
API_URL = "https://api.laozhang.ai/v1beta/models/gemini-2.5-flash-image:generateContent"
# ============================
def generate_text_to_image ( prompt , aspect_ratio = "16:9" , image_size = "2K" ):
"""场景1: 文生图"""
print ( f " \n 📸 文生图: { prompt } " )
payload = {
"contents" : [{ "parts" : [{ "text" : prompt}]}],
"generationConfig" : {
"responseModalities" : [ "IMAGE" ],
"imageConfig" : { "aspectRatio" : aspect_ratio}
}
}
if USE_NANO_BANANA_2 and image_size:
payload[ "generationConfig" ][ "imageConfig" ][ "imageSize" ] = image_size
return call_api(payload, f "text_ { image_size or '1K' } " )
def generate_image_to_image ( input_image , prompt , aspect_ratio = "1:1" , image_size = "2K" ):
"""场景2: 单图生图"""
print ( f " \n 🎨 单图生图: { input_image } " )
with open (input_image, "rb" ) as f:
img_b64 = base64.b64encode(f.read()).decode( "utf-8" )
payload = {
"contents" : [{
"parts" : [
{ "text" : prompt},
{ "inline_data" : { "mime_type" : "image/jpeg" , "data" : img_b64}}
]
}],
"generationConfig" : {
"responseModalities" : [ "IMAGE" ],
"imageConfig" : { "aspectRatio" : aspect_ratio}
}
}
if USE_NANO_BANANA_2 and image_size:
payload[ "generationConfig" ][ "imageConfig" ][ "imageSize" ] = image_size
return call_api(payload, f "styled_ { image_size or '1K' } " )
def generate_multi_image_mix ( images , prompt , aspect_ratio = "16:9" , image_size = "2K" ):
"""场景3: 多图混合"""
print ( f " \n 🖼️ 多图混合: { len (images) } 张图片" )
parts = [{ "text" : prompt}]
for img in images:
with open (img, "rb" ) as f:
parts.append({ "inline_data" : { "mime_type" : "image/jpeg" , "data" : base64.b64encode(f.read()).decode()}})
payload = {
"contents" : [{ "parts" : parts}],
"generationConfig" : {
"responseModalities" : [ "IMAGE" ],
"imageConfig" : { "aspectRatio" : aspect_ratio}
}
}
if USE_NANO_BANANA_2 and image_size:
payload[ "generationConfig" ][ "imageConfig" ][ "imageSize" ] = image_size
return call_api(payload, f "mixed_ { image_size or '1K' } " )
def call_api ( payload , prefix ):
"""调用 API"""
headers = { "Authorization" : f "Bearer { API_KEY } " , "Content-Type" : "application/json" }
try :
response = requests.post( API_URL , headers = headers, json = payload, timeout = 180 )
result = response.json()
image_data = result[ "candidates" ][ 0 ][ "content" ][ "parts" ][ 0 ][ "inlineData" ][ "data" ]
filename = f " { prefix } _ { datetime.now().strftime( '%Y%m %d _%H%M%S' ) } .png"
with open (filename, "wb" ) as f:
f.write(base64.b64decode(image_data))
print ( f "✅ 已保存: { filename } " )
return True
except Exception as e:
print ( f "❌ 错误: { e } " )
return False
# ========== 主程序 ==========
def main ():
print ( "🎨 Gemini 图片生成 - 完整演示" )
# 场景 1: 文生图
generate_text_to_image(
"A futuristic cyberpunk city at night, 4k" ,
aspect_ratio = "16:9" ,
image_size = "4K" if USE_NANO_BANANA_2 else None
)
# 场景 2: 单图生图 (需要 test_cat.jpg)
if os.path.exists( "test_cat.jpg" ):
generate_image_to_image(
"test_cat.jpg" ,
"Van Gogh Starry Night style" ,
aspect_ratio = "1:1" ,
image_size = "2K" if USE_NANO_BANANA_2 else None
)
# 场景 3: 多图混合 (需要 test_cat.jpg, test_apple.jpg)
if os.path.exists( "test_cat.jpg" ) and os.path.exists( "test_apple.jpg" ):
generate_multi_image_mix(
[ "test_cat.jpg" , "test_apple.jpg" ],
"A cat eating an apple" ,
aspect_ratio = "16:9" ,
image_size = "2K" if USE_NANO_BANANA_2 else None
)
print ( " \n ✅ 演示完成!" )
if __name__ == "__main__" :
main()
特点 :
✅ 一个脚本包含所有三个场景
✅ 自动处理 Nano Banana 和 Nano Banana 2 的差异
✅ 简洁易读,只有 ~120 行代码
✅ 修改 USE_NANO_BANANA_2 即可切换模型
Bash 脚本示例
#!/bin/bash
# ============================================================
# Gemini 图片生成工具 - Bash/Curl 版本
# 支持 Nano Banana (稳定版) 和 Nano Banana 2 (预览版,支持4K)
# ============================================================
# ========== 配置区 ==========
# 1. 设置你的 API 密钥
API_KEY = "sk-YOUR_API_KEY"
# 2. 选择模型和分辨率
# 方案1: Nano Banana 2 (预览版) - 支持 4K
MODEL = "nano_banana2"
API_URL = "https://api.laozhang.ai/v1beta/models/gemini-3-pro-image-preview:generateContent"
PROMPT = "A futuristic cyberpunk city at night, neon lights, flying cars, highly detailed, 4k"
ASPECT_RATIO = "16:9"
IMAGE_SIZE = "4K" # 1K, 2K, 4K
# 方案2: Nano Banana (稳定版) - 固定 1K
# MODEL="nano_banana"
# API_URL="https://api.laozhang.ai/v1beta/models/gemini-2.5-flash-image:generateContent"
# PROMPT="a beautiful sunset over mountains"
# ASPECT_RATIO="16:9"
# IMAGE_SIZE="" # 稳定版不支持此参数,留空
# 3. 设置输出文件名
OUTPUT_FILE = "gemini_${ IMAGE_SIZE }_$( date +%Y%m%d_%H%M%S).png"
# ============================
# 检查依赖
if ! command -v jq & > /dev/null; then
echo "❌ 错误: 需要安装 jq 工具"
echo ""
echo "安装方法:"
echo " macOS: brew install jq"
echo " Ubuntu: sudo apt-get install jq"
echo " CentOS: sudo yum install jq"
echo ""
exit 1
fi
echo "============================================================"
echo "Gemini 图片生成工具"
echo "============================================================"
echo "⏰ 开始时间: $( date '+%Y-%m-%d %H:%M:%S')"
echo "============================================================"
echo "🚀 开始生成图片..."
echo "📝 提示词: ${ PROMPT }"
echo "📐 纵横比: ${ ASPECT_RATIO }"
echo "📡 发送请求到 Gemini API..."
# 构建 JSON 请求
if [ -n " $IMAGE_SIZE " ]; then
# 包含分辨率参数(仅 Nano Banana 2)
REQUEST_JSON = $( jq -n \
--arg prompt " $PROMPT " \
--arg ratio " $ASPECT_RATIO " \
--arg size " $IMAGE_SIZE " \
'{
contents: [{
parts: [{text: $prompt}]
}],
generationConfig: {
responseModalities: ["IMAGE"],
imageConfig: {
aspectRatio: $ratio,
imageSize: $size
}
}
}' )
echo "🖼️ 分辨率: ${ IMAGE_SIZE }"
else
# 不包含分辨率参数(Nano Banana)
REQUEST_JSON = $( jq -n \
--arg prompt " $PROMPT " \
--arg ratio " $ASPECT_RATIO " \
'{
contents: [{
parts: [{text: $prompt}]
}],
generationConfig: {
responseModalities: ["IMAGE"],
imageConfig: {
aspectRatio: $ratio
}
}
}' )
echo "🖼️ 分辨率: 1K (固定)"
fi
# 发送请求
RESPONSE = $( curl -s -X POST "${ API_URL }" \
-H "Authorization: Bearer ${ API_KEY }" \
-H "Content-Type: application/json" \
-d "${ REQUEST_JSON }" )
# 检查错误
if echo "${ RESPONSE }" | jq -e '.error' & > /dev/null; then
echo "❌ 生成失败"
echo "💥 错误信息:"
echo "${ RESPONSE }" | jq -r '.error.message // .error'
echo ""
echo "建议检查:"
echo " 1. API 密钥是否正确"
echo " 2. 网络连接是否正常"
echo " 3. 提示词是否合理"
exit 1
fi
# 提取图片数据
echo "💾 正在保存图片..."
IMAGE_DATA = $( echo "${ RESPONSE }" | jq -r '.candidates[0].content.parts[0].inlineData.data' 2> /dev/null )
if [ -z " $IMAGE_DATA " ] || [ " $IMAGE_DATA " = "null" ]; then
echo "❌ 未找到图片数据"
echo "📋 响应内容:"
echo "${ RESPONSE }" | jq '.' 2> /dev/null || echo "${ RESPONSE }"
exit 1
fi
# 解码并保存图片
echo "${ IMAGE_DATA }" | base64 --decode > "${ OUTPUT_FILE }"
# 检查结果
if [ -f "${ OUTPUT_FILE }" ]; then
FILE_SIZE = $( du -h "${ OUTPUT_FILE }" | cut -f1 )
echo "✅ 图片已保存: ${ OUTPUT_FILE }"
echo "📊 文件大小: ${ FILE_SIZE }"
echo ""
echo "============================================================"
echo "🎉 生成成功!"
echo "⏰ 结束时间: $( date '+%Y-%m-%d %H:%M:%S')"
echo "============================================================"
else
echo "❌ 图片保存失败"
exit 1
fi
🚀 Gemini 3 Pro 高级特性(Nano Banana 2 独有)
Gemini 3 Pro Image Preview (Nano Banana 2) 引入了多项突破性功能,专为专业创作设计。
🧠 思考模式 (Thinking Mode)
Nano Banana 2 内置了推理能力 ,在生成图片前会自动优化构图和逻辑,以确保更高质量的输出。此功能默认启用,无需额外配置。
💡 思考模式的优势
自动优化构图和布局
理解复杂的多步骤指令
生成过程中会创建临时”思维图像”(在后端,不收费)
最终输出质量更高、更符合预期
🌐 Google 搜索接地 (Grounding)
模型可以使用 Google 搜索作为工具,利用实时数据(如天气、股价、新闻)生成图片。
curl -s -X POST "https://api.laozhang.ai/v1beta/models/gemini-3-pro-image-preview:generateContent" \
-H "Authorization: Bearer $API_KEY " \
-H "Content-Type: application/json" \
-d '{
"contents": [{"parts": [{"text": "Visualize the current weather forecast for the next 5 days in San Francisco as a clean, modern weather chart."}]}],
"tools": [{"google_search": {}}],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"],
"imageConfig": {"aspectRatio": "16:9"}
}
}'
注意 :使用搜索接地时,responseModalities 必须包含 "TEXT"(即 ["TEXT", "IMAGE"]),纯图片模式下无法返回搜索结果。
🎨 多图参考 (Reference Images)
Nano Banana 2 支持混合使用最多 14 张参考图片 :
最多 6 张 高保真对象图片(用于包含在最终图片中)
最多 5 张 人物图片(用于保持角色一致性)
这使得复杂的合成、风格迁移和角色保持成为可能。
# 多图参考示例(Python)
import requests
import base64
API_KEY = "sk-YOUR_API_KEY"
API_URL = "https://api.laozhang.ai/v1beta/models/gemini-3-pro-image-preview:generateContent"
# 准备多张参考图片
image_paths = [ "cat.jpg" , "apple.jpg" ]
parts = [{ "text" : "Combine these images: a cat eating an apple on a table" }]
for path in image_paths:
with open (path, "rb" ) as f:
image_data = base64.b64encode(f.read()).decode( "utf-8" )
parts.append({
"inline_data" : {
"mime_type" : "image/jpeg" ,
"data" : image_data
}
})
# 发送请求
response = requests.post(
API_URL ,
headers = {
"Authorization" : f "Bearer { API_KEY } " ,
"Content-Type" : "application/json"
},
json = {
"contents" : [{ "parts" : parts}],
"generationConfig" : {
"responseModalities" : [ "IMAGE" ],
"imageConfig" : {
"aspectRatio" : "16:9" ,
"imageSize" : "2K"
}
}
}
)
💡 多图参考最佳实践
物体图片:用于产品合成、场景构建
人物图片:保持角色外观一致性(如制作系列图片)
组合使用:创建复杂的视觉叙事
💡 最佳实践
提示词优化
明确描述 使用具体、详细的描述,包括主体、风格、颜色、光线等
参考风格 可以指定艺术风格:“油画风格”、“水彩画”、“赛博朋克风格”等
纵横比选择建议
用途 推荐纵横比 社交媒体横图 16:9 手机壁纸/竖屏 9:16 Instagram 正方形 1:1 打印照片 4:3 或 3:2 电影海报 2:3 横幅广告 21:9
❓ 常见问题
什么是 Nano Banana 和 Nano Banana 2?
Nano Banana 是 Google 图像生成技术的内部代号:
Nano Banana (一代)= gemini-2.5-flash-image(稳定版)
Nano Banana 2 (二代)= gemini-3-pro-image-preview(最新版)
主要区别 :
Nano Banana 2 基于最新的 Gemini 3 架构,推理能力和图像质量更优
Nano Banana 2 支持 1K、2K、4K 三种分辨率,Nano Banana 固定为 1K
Nano Banana 是正式稳定版本,适合生产环境
价格:Nano Banana 2 $0.05/张(官网 $0.24),Nano Banana $0.025/张(官网 $0.04)
调用方式完全相同
如何从 Nano Banana 升级到 Nano Banana 2?
升级非常简单,只需修改模型名称: OpenAI 兼容模式 :{
"model" : "gemini-3-pro-image-preview" // 原来是 gemini-2.5-flash-image
}
Google 原生格式 :将 URL 中的模型名从:
/v1beta/models/gemini-2.5-flash-image:generateContent
改为:
/v1beta/models/gemini-3-pro-image-preview:generateContent
✅ 其他参数完全不变,无需修改代码逻辑!
Nano Banana 2 和 Nano Banana 哪个更好?
推荐场景 :
Nano Banana 2 (gemini-3-pro-image-preview):
✅ 追求最佳图像质量和最新技术
✅ 需要 4K 超高清输出
✅ 需要高级功能(思考模式、搜索接地、多图参考)
✅ 愿意尝试新特性
⚠️ 作为 Preview 版本,功能可能迭代
Nano Banana (gemini-2.5-flash-image):
✅ 生产环境,需要稳定性保障
✅ 1K 分辨率足够使用
✅ 预算有限,追求性价比
✅ 正式版本,稳定可靠
速度相同 ,可根据需求自由选择!价格差异 :
Nano Banana 2:$0.05/张(官网 $0.24,便宜 79%,支持 4K)
Nano Banana:$0.025/张(官网 $0.04,便宜 37.5%,固定 1K)
如果只需要 1:1 正方形图片,使用 OpenAI 兼容模式 更简单,完美兼容现有代码
如果需要特定纵横比(如 16:9 宽屏)或高分辨率(2K/4K),使用 Google 原生格式
价格透明:Nano Banana 2 $0.05/张,Nano Banana $0.025/张
Google 原生格式支持 10 种纵横比:
横向:21:9, 16:9, 4:3, 3:2
正方形:1:1
纵向:9:16, 3:4, 2:3
其他:5:4, 4:5
Nano Banana 2 (gemini-3-pro-image-preview)支持三种分辨率:
1K :标准分辨率(如 1024×1024,根据纵横比调整)
2K :高分辨率(如 2048×2048,根据纵横比调整)
4K :超高分辨率(如 4096×4096,根据纵横比调整)
Nano Banana (gemini-2.5-flash-image)固定为 1K(1024px),不支持 imageSize 参数。使用方法 :
在 Google 原生格式的 imageConfig 中添加 "imageSize": "4K" 参数即可。
详细描述 :提供具体的细节(颜色、风格、场景等)
英文提示词 :英文通常效果更好
参考风格 :指定艺术风格(如”油画风格”、“水彩画”)
多次尝试 :可以用不同的提示词尝试,价格低廉
Base64 数据可以直接在网页中显示: < img src = "data:image/png;base64,iVBORw0KG..." />
或者解码保存为文件(参考上面的代码示例)
🔗 相关资源
📝 更新日志
🚀 Nano Banana 2 (Gemini 3 Pro Image) 重大更新
🖼️ 4K 分辨率 :支持 1K、2K、4K 三种分辨率选项
🧠 思考模式 :默认启用推理能力,自动优化构图
🌐 搜索接地 :支持结合 Google Search 实时数据生成图片
🎨 多图参考 :支持最多 14 张参考图片进行复杂合成
💰 价格优势 :Nano Banana 2 $0.05/张(官网 $0.24,便宜 79%),Nano Banana $0.025/张(官网 $0.04,便宜 37.5%)
📚 文档更新
更新分辨率表格,提供精确像素数据
添加高级特性使用指南(思考模式、搜索接地)
更新所有示例代码
新增 code-demo 目录,提供完整可执行脚本
2025-11-20:Nano Banana 2 上线
🚀 新增 Nano Banana 2(Gemini 3 Pro Image)
✅ 新增 gemini-3-pro-image-preview 模型支持
🧠 基于最新 Gemini 3 架构,更强的推理能力和图像质量
🔄 完全兼容现有调用方式,只需修改模型名称
📚 完善文档,添加 Nano Banana 系列名称对照说明
💡 新增模型选择指南和迁移说明
注意 :gemini-2.5-flash-image 继续稳定服务,可放心使用