Nano Banana Pro API 單張圖片限制多大?7MB 上限完全解析及解決方案

作者注:詳解 Nano Banana Pro (gemini-3-pro-image-preview) API 單張圖片 7MB 大小限制,支持的 MIME 類型、寬高比規格,以及超限時的壓縮解決方案

使用 Nano Banana Pro API 進行圖片編輯或圖生圖時,開發者經常遇到 上傳圖片失敗 的問題。本文將詳細解析單張圖片 7MB 的硬性限制,以及如何正確處理超限圖片。

核心價值: 讀完本文,你將掌握 Nano Banana Pro 圖片上傳的所有規格限制,並學會 3 種壓縮超限圖片的方法。

nano-banana-pro-api-image-size-limit-7mb-zh-hant 图示


Nano Banana Pro API 圖片限制核心要點

調用 Nano Banana Pro (gemini-3-pro-image-preview) 上傳圖片時,需要遵守以下技術規格:

限制項 規格值 說明
單張圖片大小 7 MB 內嵌數據或控制檯直接上傳的硬性上限
Cloud Storage 30 MB 通過 Google Cloud Storage 上傳時的上限
每次請求圖片數 最多 14 張 單個提示中的圖片數量上限
輸出圖片數 32,768 tokens 受輸出 token 限制

爲什麼是 7MB?

Google 官方文檔明確指出:內嵌數據或通過控制檯直接上傳的每個文件大小上限爲 7 MB。這個限制的設計考慮:

  1. 傳輸效率 – Base64 編碼後圖片體積增大約 33%,7MB 原圖編碼後約 9.3MB
  2. 服務穩定性 – 限制單文件大小可以保證 API 響應速度
  3. 內存管理 – 避免單次請求佔用過多服務器內存

如果需要上傳更大的圖片(最大 30MB),可以使用 Google Cloud Storage 中轉,但這會增加開發複雜度。

nano-banana-pro-api-image-size-limit-7mb-zh-hant 图示


Nano Banana Pro API 支持的圖片格式

以下是 Nano Banana Pro 支持的 MIME 類型和格式對照:

MIME 類型 文件擴展名 支持狀態 備註
image/png .png 支持 推薦,無損壓縮
image/jpeg .jpg, .jpeg 支持 推薦,體積小
image/webp .webp 支持 高壓縮比
image/heic .heic 支持 iPhone 原生格式
image/heif .heif 支持 高效圖像格式
image/gif .gif 不支持 需轉換格式
image/bmp .bmp 不支持 需轉換格式
image/tiff .tiff 不支持 需轉換格式

API易 對 JPEG 格式的兼容優化

值得注意的是,API易 apiyi.com 平臺對 JPEG 格式進行了額外的兼容性優化。部分舊版 JPEG 文件在直接調用 Google API 時可能出現格式識別問題,通過 API易 中轉可以自動處理這些兼容性問題。

🎯 格式建議: 日常使用推薦 JPEG 或 WebP 格式,體積小且兼容性好。PNG 適合需要透明背景的場景。通過 API易 apiyi.com 調用 Nano Banana Pro,可獲得更好的格式兼容性支持。


Nano Banana Pro API 支持的寬高比

Nano Banana Pro 支持豐富的寬高比選項,滿足不同應用場景:

寬高比 用途說明 典型分辨率
1:1 社交頭像、產品圖 1024×1024, 2048×2048
3:2 標準照片比例 1536×1024
2:3 豎版照片 1024×1536
3:4 社交媒體豎圖 1536×2048
4:3 傳統顯示器比例 2048×1536
4:5 Instagram 推薦 1638×2048
5:4 大幅打印常用 2048×1638
9:16 手機豎屏視頻 1152×2048
16:9 橫屏視頻/PPT 2048×1152
21:9 超寬屏/影院比例 2688×1152

nano-banana-pro-api-image-size-limit-7mb-zh-hant 图示


Nano Banana Pro API 圖片超限解決方案

當你的圖片超過 7MB 時,以下是 3 種推薦的解決方案:

方案一:Python 壓縮(推薦)

使用 Pillow 庫進行智能壓縮,自動調整到 7MB 以下:

from PIL import Image
import io

def compress_image_for_nano_banana(image_path: str, max_size_mb: float = 7.0) -> bytes:
    """
    壓縮圖片到 Nano Banana Pro API 限制以下

    Args:
        image_path: 原圖路徑
        max_size_mb: 最大文件大小(MB),默認7MB

    Returns:
        壓縮後的圖片字節數據
    """
    max_size_bytes = max_size_mb * 1024 * 1024

    with Image.open(image_path) as img:
        # 轉換爲 RGB(處理 RGBA 透明圖)
        if img.mode in ('RGBA', 'P'):
            img = img.convert('RGB')

        # 先嚐試直接保存
        buffer = io.BytesIO()
        img.save(buffer, format='JPEG', quality=95)

        if buffer.tell() <= max_size_bytes:
            return buffer.getvalue()

        # 逐步降低質量直到滿足大小限制
        for quality in range(90, 10, -5):
            buffer = io.BytesIO()
            img.save(buffer, format='JPEG', quality=quality)
            if buffer.tell() <= max_size_bytes:
                print(f"壓縮成功: quality={quality}, size={buffer.tell()/1024/1024:.2f}MB")
                return buffer.getvalue()

        # 如果質量壓縮不夠,同時縮小尺寸
        scale = 0.9
        while scale > 0.3:
            new_size = (int(img.width * scale), int(img.height * scale))
            resized = img.resize(new_size, Image.LANCZOS)
            buffer = io.BytesIO()
            resized.save(buffer, format='JPEG', quality=85)
            if buffer.tell() <= max_size_bytes:
                print(f"壓縮成功: scale={scale:.1f}, size={buffer.tell()/1024/1024:.2f}MB")
                return buffer.getvalue()
            scale -= 0.1

        raise ValueError("無法將圖片壓縮到 7MB 以下")

# 使用示例
compressed_data = compress_image_for_nano_banana("large_image.png")

查看完整的 API 調用代碼(含壓縮和上傳)
import requests
import base64
from PIL import Image
import io
from typing import Dict, Any

def compress_image_for_nano_banana(image_path: str, max_size_mb: float = 7.0) -> bytes:
    """壓縮圖片到指定大小"""
    max_size_bytes = max_size_mb * 1024 * 1024

    with Image.open(image_path) as img:
        if img.mode in ('RGBA', 'P'):
            img = img.convert('RGB')

        # 嘗試不同質量級別
        for quality in range(95, 10, -5):
            buffer = io.BytesIO()
            img.save(buffer, format='JPEG', quality=quality)
            if buffer.tell() <= max_size_bytes:
                return buffer.getvalue()

        # 縮小尺寸
        scale = 0.8
        while scale > 0.3:
            new_size = (int(img.width * scale), int(img.height * scale))
            resized = img.resize(new_size, Image.LANCZOS)
            buffer = io.BytesIO()
            resized.save(buffer, format='JPEG', quality=80)
            if buffer.tell() <= max_size_bytes:
                return buffer.getvalue()
            scale -= 0.1

        raise ValueError("無法壓縮到 7MB 以下")

def edit_image_with_nano_banana(
    image_path: str,
    prompt: str,
    api_key: str = "YOUR_API_KEY",
    base_url: str = "https://vip.apiyi.com/v1"
) -> Dict[str, Any]:
    """
    使用 Nano Banana Pro 編輯圖片

    Args:
        image_path: 原圖路徑
        prompt: 編輯指令
        api_key: API 密鑰
        base_url: API 基礎地址

    Returns:
        API 響應結果
    """
    # 檢查並壓縮圖片
    import os
    file_size = os.path.getsize(image_path)

    if file_size > 7 * 1024 * 1024:
        print(f"原圖 {file_size/1024/1024:.2f}MB 超過 7MB 限制,開始壓縮...")
        image_data = compress_image_for_nano_banana(image_path)
    else:
        with open(image_path, 'rb') as f:
            image_data = f.read()

    # Base64 編碼
    image_base64 = base64.b64encode(image_data).decode('utf-8')

    # 調用 API
    response = requests.post(
        f"{base_url}/images/edits",
        json={
            "model": "gemini-3-pro-image-preview",
            "image": image_base64,
            "prompt": prompt
        },
        headers={
            "Authorization": f"Bearer {api_key}",
            "Content-Type": "application/json"
        },
        timeout=(30, 600)  # 連接超時30秒,讀取超時600秒
    )

    return response.json()

# 使用示例
if __name__ == "__main__":
    result = edit_image_with_nano_banana(
        image_path="my_photo.jpg",
        prompt="將背景改爲海邊日落"
    )
    print(result)

方案二:在線壓縮工具

如果不想寫代碼,可以使用在線工具:

  • TinyPNG: tinypng.com – 智能壓縮 PNG/JPEG
  • Squoosh: squoosh.app – Google 開源的圖片壓縮工具
  • iLoveIMG: iloveimg.com – 支持批量壓縮

方案三:命令行工具

使用 ImageMagick 快速壓縮:

# 壓縮到指定大小(約 7MB)
convert input.png -quality 85 -define jpeg:extent=7MB output.jpg

# 同時調整尺寸和質量
convert input.png -resize 4096x4096\> -quality 80 output.jpg

建議: 通過 API易 apiyi.com 調用 Nano Banana Pro,平臺提供免費測試額度,方便驗證壓縮後的圖片是否能正常處理。


Nano Banana Pro API 常見報錯及解決

錯誤信息 原因 解決方案
File size exceeds limit 單張圖片超過 7MB 使用上述壓縮方案
Unsupported MIME type 格式不支持 (如 GIF/BMP) 轉換爲 PNG/JPEG/WebP
Invalid image format 圖片損壞或格式異常 重新導出或轉換格式
Too many images 超過 14 張圖片限制 拆分爲多次請求

常見問題

Q1: 7MB 限制是針對原圖還是 Base64 編碼後?

7MB 限制是針對 原始文件大小,不是 Base64 編碼後的大小。Base64 編碼會使數據增大約 33%,所以 7MB 的原圖編碼後約 9.3MB。API 會在解碼後檢查原始大小。

Q2: 爲什麼我的 5MB 圖片上傳還是失敗?

可能原因:

  1. 圖片格式不支持(如 GIF、BMP、TIFF)
  2. 圖片文件損壞
  3. 請求總大小超過 20MB(多張圖片場景)

建議先轉換爲 JPEG 格式,再通過 API易 apiyi.com 測試。

Q3: 通過 Cloud Storage 上傳 30MB 圖片的流程是什麼?
  1. 將圖片上傳到 Google Cloud Storage
  2. 獲取圖片的 gs:// 鏈接
  3. 在 API 請求中使用該鏈接替代 Base64 數據
  4. 這種方式支持最大 30MB 的圖片

注意:這需要額外配置 Google Cloud 賬號,對於大多數場景,壓縮到 7MB 以下更簡單。


總結

Nano Banana Pro (gemini-3-pro-image-preview) API 圖片限制的核心要點:

  1. 單張圖片限制 7MB: 內嵌數據或控制檯上傳的硬性上限,Cloud Storage 可達 30MB
  2. 支持 5 種格式: PNG、JPEG、WebP、HEIC、HEIF,不支持 GIF/BMP/TIFF
  3. 10 種寬高比: 從 1:1 到 21:9 全面覆蓋各類應用場景
  4. 超限解決方案: Python 壓縮、在線工具、命令行工具三種方式

掌握這些限制後,你可以更高效地使用 Nano Banana Pro 進行圖片編輯和生成。

推薦通過 API易 apiyi.com 測試 Nano Banana Pro,平臺提供免費額度和 JPEG 格式兼容優化,單張圖片僅需 $0.05


📚 參考資料

⚠️ 鏈接格式說明: 所有外鏈使用 資料名: domain.com 格式,方便複製但不可點擊跳轉,避免 SEO 權重流失。

  1. Google Gemini API 圖片理解文檔: 官方圖片輸入規格說明

    • 鏈接: ai.google.dev/gemini-api/docs/image-understanding
    • 說明: 包含 MIME 類型和大小限制的官方文檔
  2. Firebase AI Logic 輸入文件要求: 詳細的文件規格說明

    • 鏈接: firebase.google.com/docs/ai-logic/input-file-requirements
    • 說明: 包含所有支持的文件類型和限制
  3. Pillow 圖片處理文檔: Python 圖片壓縮庫官方文檔

    • 鏈接: pillow.readthedocs.io
    • 說明: 學習圖片壓縮和格式轉換的最佳資源

作者: 技術團隊
技術交流: 歡迎在評論區討論,更多資料可訪問 API易 apiyi.com 技術社區