Skip to content

Gemini 图像生成(Nano Banana 🍌)

通过 Gemini 模型生成高质量图像,支持多种宽高比和分辨率配置。

接口地址

https://www.dmxapi.cn

注意:

需要升级谷歌sdk为最新版

模型名称

Gemini 3 Pro Image Preview

  • 模型名称: gemini-3-pro-image-preview
  • 别名: Nano Banana Pro 预览版
  • 特点: 支持 1K/2K/4K 分辨率
  • 新特性: 支持联网搜索生成图片!

Gemini 2.5 Flash Image

  • 模型名称: gemini-2.5-flash-image
  • 别名: Nano Banana
  • 特点: 快速生成,固定 1K 分辨率

python SDK 代码示例

python
"""
DMXAPI Gemini 图像生成示例
使用 Google Gemini API 生成图像,并保存到本地 output 文件夹
"""

from google import genai
from google.genai import types
import os
from datetime import datetime

# ============================================================================
# 配置部分
# ============================================================================

# DMXAPI 密钥和基础 URL
api_key = "sk-***************************************"  # 替换为你的 DMXAPI 密钥
BASE_URL = "https://www.dmxapi.cn"

# 创建 Gemini 客户端
client = genai.Client(api_key=api_key, http_options={'base_url': BASE_URL})

# ============================================================================
# 图像生成提示词
# ============================================================================

# 定义图像生成的提示词
prompt = (
    "Visualize the current weather forecast for the next 5 days in ShangHi as a clean, modern weather chart. Add a visual on what I should wear each day"
)

# ============================================================================
# 调用 DMXAPI 生成图像
# ============================================================================

response = client.models.generate_content(
    # 模型名称
    model="gemini-3-pro-image-preview",  # 使用 Gemini 3 Pro 图像预览模型

    # 输入内容
    contents=[prompt],

    # 生成配置
    config=types.GenerateContentConfig(
        # response_modalities: 设置响应模态
        # - ['Image']: 仅返回图片,不返回文本
        # - ['Text', 'Image']: 同时返回文本和图片(默认值)
        # gemini-2.5-flash-image 不能使用该参数
        response_modalities=['Image'],

        # image_config: 图像配置选项
        image_config=types.ImageConfig(
            # aspect_ratio: 设置输出图片的宽高比(注意:使用驼峰命名)
            #
            # ┌─────────────────────────────────────────────────────────────────┐
            # │ Gemini 2.5 Flash                                                │
            # ├──────────┬─────────────┬────────┐                               │
            # │ 宽高比    │ 分辨率      │ 令牌    │                               │
            # ├──────────┼─────────────┼────────┤                               │
            # │ 1:1      │ 1024x1024   │ 1290   │                               │
            # │ 2:3      │ 832x1248    │ 1290   │                               │
            # │ 3:2      │ 1248x832    │ 1290   │                               │
            # │ 3:4      │ 864x1184    │ 1290   │                               │
            # │ 4:3      │ 1184x864    │ 1290   │                               │
            # │ 4:5      │ 896x1152    │ 1290   │                               │
            # │ 5:4      │ 1152x896    │ 1290   │                               │
            # │ 9:16     │ 768x1344    │ 1290   │                               │
            # │ 16:9     │ 1344x768    │ 1290   │                               │
            # └──────────┴─────────────┴────────┘                               │
            # └─────────────────────────────────────────────────────────────────┘
            #
            # ┌─────────────────────────────────────────────────────────────────┐
            # │ Gemini 3 Pro Image 预览版                                        │
            # ├──────────┬─────────────────────────────────────────────────────┐│
            # │ 宽高比    │ 1K 分辨率   │ 1K令牌  │ 2K 分辨率   │ 4K 分辨率      ││
            # ├──────────┼─────────────┼────────┼─────────────┼───────────────┤│
            # │ 1:1      │ 1024x1024   │ 1210   │ 2048x2048   │ 4096x4096     ││
            # │ 2:3      │ 848x1264    │ 1210   │ 1696x2528   │ 3392x5056     ││
            # │ 3:2      │ 1264x848    │ 1210   │ 2528x1696   │ 5056x3392     ││
            # │ 3:4      │ 896x1200    │ 1210   │ 1792x2400   │ 3584x4800     ││
            # │ 4:3      │ 1200x896    │ 1210   │ 2400x1792   │ 4800x3584     ││
            # │ 4:5      │ 928x1152    │ 1210   │ 1856x2304   │ 3712x4608     ││
            # │ 5:4      │ 1152x928    │ 1210   │ 2304x1856   │ 4608x3712     ││
            # │ 9:16     │ 768x1376    │ 1210   │ 1536x2752   │ 3072x5504     ││
            # │ 16:9     │ 1376x768    │ 1210   │ 2752x1536   │ 5504x3072     ││
            # │ 21:9     │ 1584x672    │ 1210   │ 3168x1344   │ 6336x2688     ││
            # └──────────┴─────────────┴────────┴─────────────┴───────────────┘│
            # │ 注: 2K/4K 分辨率令牌分别为 1210/2000                             │
            # └─────────────────────────────────────────────────────────────────┘
            #
            aspect_ratio="1:1",

            # image_size: 设置输出图片的分辨率(仅 Gemini 3 Pro Image 预览版支持)
            # - "1K": 1K 分辨率(默认值,所有模型均支持)
            # - "2K": 2K 分辨率(仅 Gemini 3 Pro Image 预览版)
            # - "4K": 4K 分辨率(仅 Gemini 3 Pro Image 预览版)
            # gemini-2.5-flash-image 不能使用该参数
            # image_size="1K",
        ),

        # tools: Google 搜索工具(可选)
        # - 使用实时信息生成图像(如天气预报、股市图表、近期活动等)
        # - 注意: 使用搜索工具时必须设置 response_modalities=['Text', 'Image']
        # - 图片专用模式 ['Image'] 与搜索工具不兼容
        # 示例: tools=[{"google_search": {}}]
        # gemini-2.5-flash-image 不能使用该参数
        # tools=[{"google_search": {}}]
    )
)

# ============================================================================
# 处理响应并保存图像
# ============================================================================

for part in response.parts:
    # 处理文本响应(如果有)
    if part.text is not None:
        print(part.text)

    # 处理图像响应
    elif part.inline_data is not None:
        # 确保 output 文件夹存在
        os.makedirs("output", exist_ok=True)

        # 生成带时间戳的文件名
        # 格式: generated_image_20250121_143052.png (年月日_时分秒)
        timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
        filename = f"output/generated_image_{timestamp}.png"

        # 将响应数据转换为 PIL Image 对象
        image = part.as_image()

        # 保存图像到文件
        image.save(filename)

        # 输出保存成功的提示信息
        print(f"图片已保存到 {filename}")

运行结果

执行成功后,会在 output 目录下生成图像文件:

图片已保存到 output/generated_image_20251210_110819.png

python request 代码示例

python
"""
Gemini 3 Pro Image Preview - 文生图 API 调用示例
=================================================
"""

import requests  # HTTP 请求库
import base64    # Base64 编解码库

# ============================================================================
# API 配置
# ============================================================================
# DMXAPI 密钥 (请替换为你的实际密钥)
API_KEY = "sk-***************************"

# API 请求地址
API_URL = "https://www.dmxapi.cn/v1beta/models/gemini-3-pro-image-preview:generateContent"

# ============================================================================
# 请求头
# ============================================================================
headers = {
    "x-goog-api-key": API_KEY,       # API 认证密钥
    "Content-Type": "application/json"  # 请求内容类型为 JSON
}

# ============================================================================
# 请求体
# ============================================================================
data = {
    "contents": [{                   # 内容数组
        "parts": [                   # 消息部分
            {
                # 图片生成提示词 (修改此处描述你想要生成的图片)
                "text": "生成一个美丽的日落风景,色彩丰富,充满艺术感。",
            }
        ]
    }],

    # ========================================================================
    # 生成配置
    # ========================================================================
    "generationConfig": {
        # responseModalities: 设置响应模态
        # - ["IMAGE"]: 仅返回图片,不返回文本
        # - ["TEXT", "IMAGE"]: 同时返回文本和图片(默认值)
        "responseModalities": ["IMAGE"],

        # imageConfig: 图像配置选项
        "imageConfig": {
            # aspectRatio: 设置输出图片的宽高比
            #
            # ┌─────────────────────────────────────────────────────────────────┐
            # │ Gemini 2.5 Flash                                                │
            # ├──────────┬─────────────┬────────┐                               │
            # │ 宽高比    │ 分辨率      │ 令牌    │                               │
            # ├──────────┼─────────────┼────────┤                               │
            # │ 1:1      │ 1024x1024   │ 1290   │                               │
            # │ 2:3      │ 832x1248    │ 1290   │                               │
            # │ 3:2      │ 1248x832    │ 1290   │                               │
            # │ 3:4      │ 864x1184    │ 1290   │                               │
            # │ 4:3      │ 1184x864    │ 1290   │                               │
            # │ 4:5      │ 896x1152    │ 1290   │                               │
            # │ 5:4      │ 1152x896    │ 1290   │                               │
            # │ 9:16     │ 768x1344    │ 1290   │                               │
            # │ 16:9     │ 1344x768    │ 1290   │                               │
            # │ 21:9     │ 1536x672    │ 1290   │                               │
            # └──────────┴─────────────┴────────┘                               │
            # └─────────────────────────────────────────────────────────────────┘
            #
            # ┌─────────────────────────────────────────────────────────────────┐
            # │ Gemini 3 Pro Image 预览版                                        │
            # ├──────────┬─────────────────────────────────────────────────────┐│
            # │ 宽高比    │ 1K 分辨率   │ 1K令牌  │ 2K 分辨率   │ 4K 分辨率      ││
            # ├──────────┼─────────────┼────────┼─────────────┼───────────────┤│
            # │ 1:1      │ 1024x1024   │ 1210   │ 2048x2048   │ 4096x4096     ││
            # │ 2:3      │ 848x1264    │ 1210   │ 1696x2528   │ 3392x5056     ││
            # │ 3:2      │ 1264x848    │ 1210   │ 2528x1696   │ 5056x3392     ││
            # │ 3:4      │ 896x1200    │ 1210   │ 1792x2400   │ 3584x4800     ││
            # │ 4:3      │ 1200x896    │ 1210   │ 2400x1792   │ 4800x3584     ││
            # │ 4:5      │ 928x1152    │ 1210   │ 1856x2304   │ 3712x4608     ││
            # │ 5:4      │ 1152x928    │ 1210   │ 2304x1856   │ 4608x3712     ││
            # │ 9:16     │ 768x1376    │ 1210   │ 1536x2752   │ 3072x5504     ││
            # │ 16:9     │ 1376x768    │ 1210   │ 2752x1536   │ 5504x3072     ││
            # │ 21:9     │ 1584x672    │ 1210   │ 3168x1344   │ 6336x2688     ││
            # └──────────┴─────────────┴────────┴─────────────┴───────────────┘│
            # │ 注: 2K/4K 分辨率令牌分别为 1210/2000                             │
            # └─────────────────────────────────────────────────────────────────┘
            "aspectRatio": "1:1",

            # imageSize: 设置输出图片的分辨率
            # - "1K": 1K 分辨率(默认值,所有模型均支持)
            # - "2K": 2K 分辨率(仅 Gemini 3 Pro Image 预览版支持)
            # - "4K": 4K 分辨率(仅 Gemini 3 Pro Image 预览版支持)
            # 注意: gemini-2.5-flash-image 仅支持 1K,如需 2K/4K 请使用 gemini-3-pro-image-preview
            # "imageSize": "1K"
        }
    },

    # ========================================================================
    # 工具配置(可选)
    # ========================================================================
    # tools: Google 搜索工具
    # - 使用实时信息生成图像(如根据最新资讯添加元素等)
    # - 注意: 使用搜索工具时必须设置 responseModalities: ["TEXT", "IMAGE"]
    # - 图片专用模式 ["IMAGE"] 与搜索工具不兼容
    # "tools": [{"google_search": {}}]
}

# ============================================================================
# 发送请求
# ============================================================================
response = requests.post(
    API_URL,          # 请求地址
    headers=headers,  # 请求头
    json=data         # 请求体 (自动序列化为 JSON)
)

# ============================================================================
# 响应处理
# ============================================================================
if response.status_code == 200:
    # 请求成功,解析 JSON 响应
    result = response.json()

    try:
        # 响应结构: candidates[0].content.parts[].inlineData.data
        parts = result["candidates"][0]["content"]["parts"]

        for part in parts:
            # 检查是否包含图片数据
            if "inlineData" in part:
                # 提取 Base64 编码的图片数据
                image_data = part["inlineData"]["data"]

                # Base64 解码为二进制数据
                image_bytes = base64.b64decode(image_data)

                # 输出文件名
                output_file = "gemini-native-image.png"

                # 写入文件
                with open(output_file, "wb") as f:
                    f.write(image_bytes)

                print(f"[成功] 图片已保存: {output_file}")
                break

    except (KeyError, IndexError) as e:
        # 响应结构异常
        print(f"[错误] 响应解析失败: {e}")
        print(f"[调试] 响应内容: {result}")

else:
    # 请求失败
    print(f"[错误] API 请求失败, 状态码: {response.status_code}")
    print(f"[调试] 错误信息: {response.text}")

运行结果

json
[成功] 图片已保存: gemini-native-image.png

注意事项

  • 请将代码中的 API 密钥替换为你自己的 DMXAPI 密钥
  • 生成的图像会自动保存到 output 文件夹(如不存在会自动创建)
  • response_modalities 参数可以控制返回内容类型(仅图像或图像+文本)
  • 为获得最佳性能,请使用以下语言:英语、阿拉伯语(埃及)、德语(德国)、西班牙语(墨西哥)、法语(法国)、印地语(印度)、印度尼西亚语(印度尼西亚)、意大利语(意大利)、日语(日本)、韩语(韩国)、葡萄牙语(巴西)、俄语(俄罗斯)、乌克兰语(乌克兰)、越南语(越南)、中文(中国)。
  • gemini-2.5-flash-image 最多可接受 3 张图片作为输入,而 gemini-3-pro-image-preview 支持 5 张高保真图片,总共最多可接受 14 张图片。

© 2025 DMXAPI Gemini模型 🍌

一个 Key 用全球大模型