跳转到主要内容
🚀 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%)

前置要求

1

获取 API Key

登录 laozhang.ai 控制台 获取 API 密钥
2

配置计费模式

编辑令牌设置,选择以下任一计费模式(两者价格相同):
  • 按量优先(推荐):优先使用余额计费,余额不足时自动切换。适合大多数用户
  • 按次计费:每次调用直接扣费。适合预算控制严格的场景
两种模式价格完全相同,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 种纵横比
分辨率固定 1KNano Banana 2 支持 1K/2K/4K,Nano Banana 固定 1K
兼容性完美兼容 OpenAI SDK需要原生调用
返回格式Base64Base64
使用场景快速迁移、简单需求需要自定义尺寸或高分辨率
纵横比支持❌ 否✅ 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-previewPreviewGemini 31K/2K/4K$0.05/张追求最佳效果、需要高分辨率
Nano Banana🛡️ 稳定gemini-2.5-flash-imageStableGemini 2.51K(固定)$0.025/张生产环境
共同特点:速度相同(~10秒)、调用方式相同

与其他图像模型对比

模型模型 ID计费方式老张API价格官方价格节省比例分辨率速度
Nano Banana 2gemini-3-pro-image-preview按次计费$0.05/张$0.24/张79%1K/2K/4K~10秒
Nano Bananagemini-2.5-flash-image按次计费$0.025/张$0.04/张37.5%1K(固定)~10秒
GPT-Image-1gpt-image-1按Token$10输入/$40输出 per M---中等
Flux Kontext Proflux-kontext-pro按次计费$0.035/张$0.04/张12.5%-快速
Sora Imagesora_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 性价比超高!

🚀 快速开始

准备工作

1

创建令牌

登录 老张API令牌管理 创建按次计费类型的令牌令牌创建界面
2

选择计费方式

重要:必须选择”按次计费”类型,不要选择”按量计费”
3

保存令牌

复制生成的令牌,格式为 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 2gemini-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 2gemini-3-pro-image-preview):支持 1K、2K、4K 三种分辨率
  • Nano Bananagemini-2.5-flash-image):固定 1K(1024px),不支持 imageSize 参数
Nano Banana 2 分辨率选项
纵横比1K 分辨率2K 分辨率4K 分辨率
1:11024×10242048×20484096×4096
16:91376×7682752×15365504×3072
9:16768×13761536×27523072×5504
4:31200×8962400×17924800×3584
3:4896×12001792×24003584×4800
21:91584×6723168×13446336×2688
3:21248×8322496×16644992×3328
2:3832×12481664×24963328×4992
5:41152×8962304×17924608×3584
4:5896×11521792×23043584×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")
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 是 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)
  • 调用方式完全相同
升级非常简单,只需修改模型名称: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 2gemini-3-pro-image-preview):
    • ✅ 追求最佳图像质量和最新技术
    • ✅ 需要 4K 超高清输出
    • ✅ 需要高级功能(思考模式、搜索接地、多图参考)
    • ✅ 愿意尝试新特性
    • ⚠️ 作为 Preview 版本,功能可能迭代
  • Nano Bananagemini-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 2gemini-3-pro-image-preview)支持三种分辨率:
  • 1K:标准分辨率(如 1024×1024,根据纵横比调整)
  • 2K:高分辨率(如 2048×2048,根据纵横比调整)
  • 4K:超高分辨率(如 4096×4096,根据纵横比调整)
Nano Bananagemini-2.5-flash-image)固定为 1K(1024px),不支持 imageSize 参数。使用方法: 在 Google 原生格式的 imageConfig 中添加 "imageSize": "4K" 参数即可。
  1. 详细描述:提供具体的细节(颜色、风格、场景等)
  2. 英文提示词:英文通常效果更好
  3. 参考风格:指定艺术风格(如”油画风格”、“水彩画”)
  4. 多次尝试:可以用不同的提示词尝试,价格低廉
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 目录,提供完整可执行脚本
🚀 新增 Nano Banana 2(Gemini 3 Pro Image)
  • ✅ 新增 gemini-3-pro-image-preview 模型支持
  • 🧠 基于最新 Gemini 3 架构,更强的推理能力和图像质量
  • 🔄 完全兼容现有调用方式,只需修改模型名称
  • 📚 完善文档,添加 Nano Banana 系列名称对照说明
  • 💡 新增模型选择指南和迁移说明
注意gemini-2.5-flash-image 继续稳定服务,可放心使用