跳转到主要内容
🚀 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%,官网 $0.24)

模型概览

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%)

🔀 两种调用方式

特性OpenAI 兼容模式Google 原生格式
端点/v1/chat/completions/v1beta/models/gemini-2.5-flash-image:generateContent
输出尺寸默认比例支持 10 种纵横比
分辨率固定 1KNano Banana 2 支持 1K/2K/4K,Nano Banana 固定 1K
多图支持✅ 支持✅ 支持
兼容性完美兼容 OpenAI SDK需要原生调用
返回格式Base64Base64
图片输入URL 或 Base64Base64(inline_data)
💡 如何选择?
  • 如果只需要默认比例的图片,使用 OpenAI 兼容模式,简单快捷
  • 如果需要自定义纵横比(如 16:9、9:16)或高分辨率(2K/4K),使用 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计费方式老张价格官网价格节省分辨率速度
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-4o 编辑gpt-4oToken----~20秒
DALL·E 2 编辑dall-e-2按次-$0.018/张-固定较慢
💰 价格优势
  • 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 兼容模式

🔄 模型切换说明
  • 使用 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 sk-YOUR_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{
    "model": "gemini-3-pro-image-preview",
    "stream": false,
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "add a cute dog to this image"
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://example.com/your-image.jpg"
                    }
                }
            ]
        }
    ]
}'

单图编辑 - 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"
)

response = client.chat.completions.create(
    model="gemini-3-pro-image-preview",  # 最新版,或使用 gemini-2.5-flash-image(稳定版)
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "add a cute dog to this image"
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://example.com/your-image.jpg"
                    }
                }
            ]
        }
    ]
)

# 提取并保存图片
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('edited.png', 'wb') as f:
        f.write(image_data)
    print("✅ 编辑后的图片已保存: edited.png")

多图合成 - 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"
)

response = client.chat.completions.create(
    model="gemini-3-pro-image-preview",  # 最新版,或使用 gemini-2.5-flash-image(稳定版)
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "merge these two images into one artistic composition"
                },
                {
                    "type": "image_url",
                    "image_url": {"url": "https://example.com/image1.jpg"}
                },
                {
                    "type": "image_url",
                    "image_url": {"url": "https://example.com/image2.jpg"}
                }
            ]
        }
    ]
)

# 提取并保存图片
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('merged.png', 'wb') as f:
        f.write(image_data)
    print("✅ 合成图片已保存: merged.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

支持的分辨率

💡 分辨率支持说明
  • Nano Banana 2gemini-3-pro-image-preview):支持 1K、2K、4K 三种分辨率
  • Nano Bananagemini-2.5-flash-image):固定 1K(1024px),不支持 imageSize 参数

Python 代码示例

💡 三个示例递进关系
示例1编辑图片 → 示例2用它变换风格 → 示例3融合前两张图。逻辑清晰!
import requests
import base64

# ========== 配置 ==========
API_KEY = "sk-YOUR_API_KEY"

# Nano Banana 2 (支持 2K/4K)
API_URL = "https://api.laozhang.ai/v1beta/models/gemini-3-pro-image-preview:generateContent"
INPUT_IMAGE = "cat.jpg"  # 准备一张猫的图片
PROMPT = "add a cute wizard hat on this cat's head"
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.png", "wb") as f:
    f.write(base64.b64decode(output_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 = "Transform this cat into Van Gogh Starry Night style oil painting"
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/png", "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 = "Combine these two cat images into a single artistic composition"
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 图片编辑工具 - Python版本
上传本地图片 + 文字描述,生成新图片,支持自定义纵横比
"""

import requests
import base64
import os
import datetime
import mimetypes
from typing import Optional, Tuple

class GeminiImageEditor:
    """Gemini 图片编辑器"""

    # 支持的纵横比
    SUPPORTED_ASPECT_RATIOS = [
        "21:9", "16:9", "4:3", "3:2", "1:1",
        "9:16", "3:4", "2:3", "5:4", "4:5"
    ]

    def __init__(self, api_key: str,
                 api_url: str = "https://api.laozhang.ai/v1beta/models/gemini-3-pro-image-preview:generateContent"):
        """
        初始化图片编辑器

        参数:
            api_key: API密钥
            api_url: API地址(使用 Google 原生 Gemini API)
        """
        self.api_key = api_key
        self.api_url = api_url
        self.headers = {
            "Content-Type": "application/json",
            "Authorization": f"Bearer {api_key}"
        }

    def edit_image(self, image_path: str, prompt: str,
                   aspect_ratio: Optional[str] = "1:1",
                   output_dir: str = ".") -> Tuple[bool, str]:
        """
        编辑图片并生成新图片

        参数:
            image_path: 输入图片路径
            prompt: 编辑描述(提示词)
            aspect_ratio: 纵横比,如 "16:9", "1:1" 等(默认 1:1)
            output_dir: 保存目录(默认当前目录)

        返回:
            (是否成功, 结果消息)
        """
        print(f"🚀 开始编辑图片...")
        print(f"📁 输入图片: {image_path}")
        print(f"📝 编辑描述: {prompt}")
        print(f"📐 纵横比: {aspect_ratio}")

        # 检查图片文件是否存在
        if not os.path.exists(image_path):
            return False, f"图片文件不存在: {image_path}"

        # 验证纵横比
        if aspect_ratio and aspect_ratio not in self.SUPPORTED_ASPECT_RATIOS:
            return False, f"不支持的纵横比 {aspect_ratio}。支持: {', '.join(self.SUPPORTED_ASPECT_RATIOS)}"

        # 读取并编码图片
        try:
            with open(image_path, 'rb') as f:
                image_data = f.read()
            image_base64 = base64.b64encode(image_data).decode('utf-8')

            # 检测图片类型
            mime_type, _ = mimetypes.guess_type(image_path)
            if not mime_type or not mime_type.startswith('image/'):
                mime_type = 'image/jpeg'  # 默认
            print(f"🎨 图片类型: {mime_type}")

        except Exception as e:
            return False, f"读取图片失败: {str(e)}"

        # 生成输出文件名
        timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
        output_file = os.path.join(output_dir, f"gemini_edited_{timestamp}.png")

        try:
            # 构建请求数据(Google 原生格式)
            payload = {
                "contents": [{
                    "parts": [
                        {"text": prompt},
                        {
                            "inline_data": {
                                "mime_type": mime_type,
                                "data": image_base64
                            }
                        }
                    ]
                }]
            }

            # 添加纵横比配置
            if aspect_ratio:
                payload["generationConfig"] = {
                    "responseModalities": ["IMAGE"],
                    "imageConfig": {
                        "aspectRatio": aspect_ratio
                    }
                }

            print("📡 发送请求到 Gemini API...")

            # 发送请求
            response = requests.post(
                self.api_url,
                headers=self.headers,
                json=payload,
                timeout=120
            )

            if response.status_code != 200:
                return False, f"API 请求失败,状态码: {response.status_code}"

            # 解析响应
            result = response.json()

            # 提取图片数据
            if "candidates" not in result or len(result["candidates"]) == 0:
                return False, "未找到图片数据"

            candidate = result["candidates"][0]
            if "content" not in candidate or "parts" not in candidate["content"]:
                return False, "响应格式错误"

            parts = candidate["content"]["parts"]
            output_image_data = None

            for part in parts:
                if "inlineData" in part and "data" in part["inlineData"]:
                    output_image_data = part["inlineData"]["data"]
                    break

            if not output_image_data:
                return False, "未找到图片数据"

            # 解码并保存图片
            print("💾 正在保存图片...")
            decoded_data = base64.b64decode(output_image_data)

            os.makedirs(os.path.dirname(output_file) if os.path.dirname(output_file) else ".", exist_ok=True)

            with open(output_file, 'wb') as f:
                f.write(decoded_data)

            file_size = len(decoded_data) / 1024  # KB
            print(f"✅ 图片已保存: {output_file}")
            print(f"📊 文件大小: {file_size:.2f} KB")

            return True, f"成功保存图片: {output_file}"

        except requests.exceptions.Timeout:
            return False, "请求超时(120秒)"
        except requests.exceptions.ConnectionError:
            return False, "网络连接错误"
        except Exception as e:
            return False, f"错误: {str(e)}"

def main():
    """主函数 - 使用示例"""

    # ========== 配置区 ==========
    # 1. 设置你的 API 密钥
    API_KEY = "sk-YOUR_API_KEY"

    # 2. 输入图片路径
    INPUT_IMAGE = "./input.jpg"  # 替换为你的图片路径

    # 3. 输入编辑描述(提示词)
    PROMPT = "add a cute cat next to the dog, keep the original composition"

    # 4. 选择纵横比(可选)
    # 支持: 21:9, 16:9, 4:3, 3:2, 1:1, 9:16, 3:4, 2:3, 5:4, 4:5
    ASPECT_RATIO = "16:9"  # 宽屏
    # ASPECT_RATIO = "1:1"   # 正方形
    # ASPECT_RATIO = "9:16"  # 竖屏

    # 5. 设置保存目录(可选)
    OUTPUT_DIR = "."  # 当前目录
    # ============================

    print("="*60)
    print("Gemini 图片编辑工具")
    print("="*60)
    print(f"⏰ 开始时间: {datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
    print("="*60)

    # 创建编辑器并编辑图片
    editor = GeminiImageEditor(API_KEY)
    success, message = editor.edit_image(
        image_path=INPUT_IMAGE,
        prompt=PROMPT,
        aspect_ratio=ASPECT_RATIO,
        output_dir=OUTPUT_DIR
    )

    # 显示结果
    print("\n" + "="*60)
    if success:
        print("🎉 编辑成功!")
        print(f"✅ {message}")
    else:
        print("❌ 编辑失败")
        print(f"💥 {message}")
        print("\n建议检查:")
        print("  1. API 密钥是否正确")
        print("  2. 图片路径是否正确")
        print("  3. 网络连接是否正常")
        print("  4. 提示词是否合理")

    print(f"⏰ 结束时间: {datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
    print("="*60)

if __name__ == "__main__":
    main()
| Search Grounding | ❌ 无 | ✅ 有 | | 多图支持 | ✅ 有(最多3张) | ✅ 有(最多14张) | | 速度 | ~10秒 | ~10秒 | | 推荐场景 | 生产环境,追求稳定性 | 追求最佳质量,需要高分辨率 |

Q2: 应该选择哪个模型?

选择 Nano Bananagemini-2.5-flash-image)如果:
  • ✅ 需要生产环境稳定性
  • ✅ 1K 分辨率足够使用
  • ✅ 希望成本最低($0.025/次)
选择 Nano Banana 2gemini-3-pro-image-preview)如果:
  • ✅ 需要高分辨率(2K/4K)
  • ✅ 追求最佳图像质量
  • ✅ 需要高级特性(Thinking Mode、Search Grounding)
  • ✅ 愿意使用预览版本

Q3: 如何切换模型?

非常简单!只需更改模型名称: OpenAI 兼容模式
# Nano Banana(稳定版)
model="gemini-2.5-flash-image"

# Nano Banana 2(最新版)
model="gemini-3-pro-image-preview"
Google 原生格式
# Nano Banana(稳定版)
https://api.laozhang.ai/v1beta/models/gemini-2.5-flash-image:generateContent

# Nano Banana 2(最新版)
https://api.laozhang.ai/v1beta/models/gemini-3-pro-image-preview:generateContent

Q4: 如何使用 4K 分辨率?

4K 仅 Nano Banana 2 支持,使用 Google 原生格式并添加 imageSize 参数:
{
  "generationConfig": {
    "responseModalities": ["IMAGE"],
    "imageConfig": {
      "aspectRatio": "16:9",
      "imageSize": "4K"  // 必须大写 "K"
    }
  }
}
重要:必须使用大写 “K”(1K、2K、4K),小写(1k)会被拒绝。

Q5: 支持哪些图片格式?

支持常见的图片格式:
  • JPG/JPEG
  • PNG
  • WebP
  • GIF(静态)
建议使用 JPG 或 PNG 格式以获得最佳效果。

Q6: 图片大小有限制吗?

  • 推荐大小:单张图片 ≤ 5MB
  • 最大大小:≤ 10MB
  • 过大的图片会增加处理时间,建议压缩后上传

Q7: 可以同时处理多少张图片?

  • Nano Banana:支持多张图片(建议 ≤ 3 张)
  • Nano Banana 2:支持多张图片(最多 14 张,建议 ≤ 4 张)
  • 图片过多会影响生成质量和处理时间

Q8: 为什么 Nano Banana 2 在老张 API 这么便宜?

模型老张 API官网节省
Nano Banana 2$0.05/次$0.24/次79%
Nano Banana$0.025/次$0.04/次37.5%
Nano Banana 2 在老张 API 性价比超高! 比官网便宜 79%,还有充值赠送和汇率优势。

📝 更新日志

2025-01-XX

  • 🆕 添加 Nano Banana 2(gemini-3-pro-image-preview)支持
  • 🎨 添加 4K 分辨率支持(仅 Nano Banana 2)
  • 🧠 添加 Thinking Mode(内置推理,默认启用)
  • 🌐 添加 Google Search Grounding 支持
  • 🖼️ 扩展多图支持至 14 张(Nano Banana 2)
  • 💰 更新价格:Nano Banana 2 $0.05/次(比官网 $0.24 便宜 79%)
  • 📊 添加完整分辨率表格
  • 🔧 更新模型对比和切换说明

2024-12-XX

  • 🎉 初始发布 Nano Banana(gemini-2.5-flash-image
  • 🎨 支持 10 种纵横比
  • 💰 价格:$0.025/次(比官网便宜 37.5%)

💡 需要帮助?

🔗 相关资源