Skip to content

API 能力 Nano Banana 图片API 谷歌最新、最强的图像生成模型 Gemini 2.5 Flash Image,代号 Nano Banana。支持自定义分辨率、10种宽高比,10秒快速生成,官网7折优惠。

概述 Nano Banana(代号)是谷歌图像生成模型的代号,目前推荐使用正式版: 正式版:gemini-2.5-flash-image(推荐,支持 10 种宽高比和分辨率自定义) 预览版:gemini-2.5-flash-image-preview(⚠️ 将于2025年10月30日下线) 重要提醒:预览版 gemini-2.5-flash-image-preview 将于 2025年10月30日 正式下线。届时本站将自动重定向到正式版 gemini-2.5-flash-image。建议尽快迁移到正式版以避免服务中断。 2025年10月3日更新:谷歌发布了正式版 gemini-2.5-flash-image,新增 10 种宽高比支持和分辨率自定义功能。正式版性能更稳定,功能更强大。 📚 最新文档 飞书完整使用指南 - 更新最快,支持评论互动 访问飞书文档获取最新的使用教程、技巧分享和问题解答。文档持续更新,遇到问题可直接在飞书上评论交流。 核心优势 🚀 生成速度快:平均仅需 10 秒,比 OpenAI 系列更快 💰 价格优势:$0.025/张(官网五折),结合充值优惠约 ¥0.14/张 🔄 完全兼容:使用对话补全端点,与 gpt-4o-image、sora_image 调用方式完全兼容 🎨 谷歌技术:基于谷歌最新、最强的图像生成/编辑技术

调用方式对比 API易 支持两种调用方式,您可以根据需求选择: 谷歌原生格式 推荐新用户使用 端点:/v1beta/models/gemini-2.5-flash-image:generateContent ✅ 支持自定义分辨率和宽高比 ✅ 支持 10 种宽高比输出 ✅ 功能最完整,与谷歌官方同步 📖 使用谷歌官方 API 格式 OpenAI 兼容模式 兼容已有代码 端点:/v1/chat/completions ⚠️ 默认 1:1 比例输出 ❌ 不支持自定义分辨率 ✅ 兼容 gpt-4o-image、sora_image 📖 使用 OpenAI 调用格式 快速选择指南 ✅ 新项目 / 需要自定义尺寸 → 使用谷歌原生格式 ✅ 已有 OpenAI 格式代码 → 继续使用 OpenAI 兼容模式 ✅ 不需要指定尺寸 → 两种格式都可以 ⚠️ 必须指定输出宽高比 → 只能用谷歌原生格式

端点对比表 特性 谷歌原生格式 OpenAI 兼容模式 端点URL /v1beta/models/gemini-2.5-flash-image:generateContent /v1/chat/completions 输出尺寸 支持 10 种宽高比自定义 默认 1:1 调用格式 谷歌官方格式 OpenAI 格式 兼容性 谷歌原生 API gpt-4o-image、sora_image 适用场景 需要精确控制输出尺寸 快速集成,兼容现有代码

OpenAI 兼容模式端点说明

正确端点 ✅

Copy POST /v1/chat/completions

错误端点 ❌

Copy POST /v1/images/generations # 不支持此端点 重要提示:OpenAI 兼容模式使用对话补全端点,不是传统的图像生成端点。这样设计是为了保持与 gpt-4o-image、sora_image 等模型的兼容性。

兼容性说明 如果你之前使用过以下模型,可以直接替换模型名称: gpt-4o-image → gemini-2.5-flash-image(推荐)或 gemini-2.5-flash-image-preview sora_image → gemini-2.5-flash-image(推荐)或 gemini-2.5-flash-image-preview 其他参数保持不变,即可无缝切换使用。 推荐使用正式版:gemini-2.5-flash-image 支持更多功能(10种宽高比、分辨率自定义),但预览版 gemini-2.5-flash-image-preview 仍可正常使用。

代码示例 根据您的需求,可以选择以下两种方式之一:

方式一:谷歌原生格式(推荐) 支持自定义分辨率和宽高比,使用谷歌官方 API 格式。

端点

Copy POST https://api.apiyi.com/v1beta/models/gemini-2.5-flash-image:generateContent

请求格式

Copy { "contents": [ { "parts": [ { "text": "图片描述提示词" } ] } ], "generationConfig": { "responseModalities": ["IMAGE"], "imageConfig": { "aspectRatio": "16:9" } } }

支持的宽高比 21:9, 16:9, 4:3, 3:2, 1:1, 9:16, 3:4, 2:3, 5:4, 4:5

Python 完整示例 参考完整的 Python 实现:gemini-image-generate-python.py

Copy #!/usr/bin/env python3 import requests import base64 import os from datetime import datetime

class GeminiImageGenerator: """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):
    self.api_key = api_key
    self.api_url = "https://api.apiyi.com/v1beta/models/gemini-2.5-flash-image:generateContent"
    self.headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {api_key}"
    }

def generate_image(self, prompt: str, aspect_ratio: str = "1:1", output_dir: str = "."):
    """生成图片并保存"""
    print(f"🚀 开始生成图片...")
    print(f"📝 提示词: {prompt}")
    print(f"📐 纵横比: {aspect_ratio}")

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

    # 构建请求
    payload = {
        "contents": [{
            "parts": [{"text": prompt}]
        }],
        "generationConfig": {
            "responseModalities": ["IMAGE"],
            "imageConfig": {"aspectRatio": aspect_ratio}
        }
    }

    try:
        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()

        # 提取图片数据
        image_data = result["candidates"][0]["content"]["parts"][0]["inlineData"]["data"]

        # 保存图片
        timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
        output_file = os.path.join(output_dir, f"gemini_{timestamp}.png")

        decoded_data = base64.b64decode(image_data)
        with open(output_file, 'wb') as f:
            f.write(decoded_data)

        print(f"✅ 图片已保存: {output_file}")
        return True, f"成功保存图片: {output_file}"

    except Exception as e:
        return False, f"错误: {str(e)}"

{/_ 使用示例 _/} if name == "main": API_KEY = "sk-your-api-key" PROMPT = "a handsome dog under the tree" ASPECT_RATIO = "16:9" # 可选: 21:9, 16:9, 4:3, 3:2, 1:1, 9:16, 3:4, 2:3, 5:4, 4:5

generator = GeminiImageGenerator(API_KEY)
success, message = generator.generate_image(PROMPT, ASPECT_RATIO)

if success:
    print(f"🎉 生成成功!{message}")
else:
    print(f"❌ 生成失败:{message}")

完整的 Python 脚本包含错误处理和更多功能,请查看源代码。

方式二:OpenAI 兼容模式 兼容现有 OpenAI 格式代码,适合快速集成。默认生成 1:1 比例图片。

端点

Copy POST https://api.apiyi.com/v1/chat/completions

请求格式

Copy { "model": "gemini-2.5-flash-image", "stream": false, "messages": [ { "role": "user", "content": "图片描述提示词" } ] }

Python 完整示例 以下是完整的 Python 示例代码,支持自动保存 base64 图片到本地:

Copy #!/usr/bin/env python3

-- coding: utf-8 --

""" Gemini 图片生成 - Python版本 支持非流式输出和自动保存base64图片到本地 """

import requests import json import base64 import re import os import datetime from typing import Optional, Tuple

class GeminiImageGenerator: def init(self, api_key: str, api_url: str = "https://api.apiyi.com/v1/chat/completions"): """ 初始化Gemini图片生成器

    Args:
        api_key: API密钥
        api_url: API地址
    """
    self.api_key = api_key
    self.api_url = api_url
    self.headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {api_key}"
    }

def generate_image(self, prompt: str, model: str = "gemini-2.5-flash-image",
                  output_dir: str = ".") -> Tuple[bool, str]:
    """
    生成图片并保存到本地

    Args:
        prompt: 图片描述提示词
        model: 使用的模型
        output_dir: 输出目录

    Returns:
        Tuple[是否成功, 结果消息]
    """
    print("🚀 开始生成图片...")
    print(f"提示词: {prompt}")
    print(f"模型: {model}")

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

    try:
        # 准备请求数据
        payload = {
            "model": model,
            "stream": False,
            "messages": [
                {
                    "role": "user",
                    "content": prompt
                }
            ]
        }

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

        # 发送非流式请求
        response = requests.post(
            self.api_url,
            headers=self.headers,
            json=payload,
            timeout=300
        )

        if response.status_code != 200:
            error_msg = f"API请求失败,状态码: {response.status_code}"
            try:
                error_detail = response.json()
                error_msg += f", 错误详情: {error_detail}"
            except:
                error_msg += f", 响应内容: {response.text[:500]}"
            return False, error_msg

        print("✅ API请求成功,正在解析响应...")

        # 解析非流式JSON响应
        try:
            result = response.json()
            print("✅ 成功解析JSON响应")
        except json.JSONDecodeError as e:
            return False, f"JSON解析失败: {str(e)}"

        # 提取消息内容
        full_content = ""
        if "choices" in result and len(result["choices"]) > 0:
            choice = result["choices"][0]
            if "message" in choice and "content" in choice["message"]:
                full_content = choice["message"]["content"]

        if not full_content:
            return False, "未找到消息内容"

        print(f"📝 获取到消息内容,长度: {len(full_content)} 字符")
        print("🔍 正在解析图片数据...")

        # 提取并保存图片(支持base64和URL两种方式)
        success, message = self._extract_and_save_images(full_content, output_file)

        if success:
            return True, message
        else:
            return False, f"图片保存失败: {message}"

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

def _extract_and_save_images(self, content: str, base_output_file: str) -> Tuple[bool, str]:
    """
    高效提取并保存base64图片数据

    Args:
        content: 包含图片数据的内容
        base_output_file: 基础输出文件路径

    Returns:
        Tuple[是否成功, 结果消息]
    """
    try:
        print(f"📄 内容预览(前200字符): {content[:200]}")

        # 使用精确的正则表达式一次性提取base64图片数据
        base64_pattern = r'data:image/([^;]+);base64,([A-Za-z0-9+/=]+)'
        match = re.search(base64_pattern, content)

        if not match:
            print('⚠️  未找到base64图片数据')
            return False, "响应中未包含base64图片数据"

        image_format = match.group(1)  # png, jpg, etc.
        b64_data = match.group(2)

        print(f'🎨 图像格式: {image_format}')
        print(f'📏 Base64数据长度: {len(b64_data)} 字符')

        # 解码并保存图片
        image_data = base64.b64decode(b64_data)

        if len(image_data) < 100:
            return False, "解码后的图片数据太小,可能无效"

        # 根据检测到的格式设置文件扩展名
        output_file = base_output_file.replace('.png', f'.{image_format}')
        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(image_data)

        print(f'🖼️  图片保存成功: {output_file}')
        print(f'📊 文件大小: {len(image_data)} 字节')

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

    except Exception as e:
        return False, f"处理图片时发生错误: {str(e)}"

def main(): """ 主函数 """ # 配置参数 API_KEY = "sk-" # 请替换为你的实际API密钥 PROMPT = "a beautiful cat under the tree"

print("="*60)
print("Gemini 图片生成器 - Python版本")
print("="*60)
print(f"开始时间: {datetime.datetime.now()}")

# 创建生成器实例
generator = GeminiImageGenerator(API_KEY)

# 生成图片
success, message = generator.generate_image(PROMPT)

print("\n" + "="*60)
if success:
    print("🎉 执行成功!")
    print(f"✅ {message}")
else:
    print("❌ 执行失败!")
    print(f"💥 {message}")

print(f"结束时间: {datetime.datetime.now()}")
print("="*60)

if name == "main": main()

使用步骤 替换 API Key:将代码中的 API_KEY 替换为你的实际 API 密钥 修改提示词:根据需要修改 PROMPT 变量 运行脚本:执行 Python 脚本,图片将自动保存到本地

使用建议

选择合适的调用方式 我是新用户,应该用哪种方式?

我已经有使用 OpenAI 格式的代码,需要迁移吗?

我需要指定输出图片的尺寸,怎么办?

预览版模型什么时候下线?

迁移指南 如果您当前使用预览版模型或希望迁移到谷歌原生格式,请参考: 1 检查当前配置

确认您当前使用的模型名称和调用端点: 模型名称:gemini-2.5-flash-image-preview → 改为 gemini-2.5-flash-image 如需自定义尺寸:迁移到谷歌原生格式端点 如只需基础功能:继续使用 OpenAI 兼容模式 2 测试新配置

在开发环境测试新的模型或端点: 验证返回结果格式 检查输出图片质量和尺寸 确认性能和响应时间 测试不同的宽高比选项(如使用谷歌原生格式) 3 逐步部署

建议采用灰度发布策略: 先在少量用户中测试 观察反馈和错误率 逐步扩大范围直至全量

价格对比 模型 定价 优势 Nano Banana $0.025/张 (充值加赠约¥0.14) ⭐ 谷歌最强技术,生成速度快 gpt-image-1 更高 - flux-kontext-pro $0.035/张 持平 sora_image 更低 逆向模型,稳定性一般 性价比建议:Nano Banana 在价格、速度、质量之间达到了很好的平衡,特别适合需要快速生成高质量图片的应用场景。

特性对比

速度对比 Nano Banana:平均 10 秒 OpenAI 系列:15-30 秒 其他模型:因模型而异

兼容性 ✅ 完全兼容 gpt-4o-image 调用方式 ✅ 完全兼容 sora_image 调用方式 ✅ 支持对话补全端点 ❌ 不支持传统图像生成端点