作者注:詳解 Nano Banana Pro (gemini-3-pro-image-preview) API 單張圖片 7MB 大小限制,支持的 MIME 類型、寬高比規格,以及超限時的壓縮解決方案
使用 Nano Banana Pro API 進行圖片編輯或圖生圖時,開發者經常遇到 上傳圖片失敗 的問題。本文將詳細解析單張圖片 7MB 的硬性限制,以及如何正確處理超限圖片。
核心價值: 讀完本文,你將掌握 Nano Banana Pro 圖片上傳的所有規格限制,並學會 3 種壓縮超限圖片的方法。

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。這個限制的設計考慮:
- 傳輸效率 – Base64 編碼後圖片體積增大約 33%,7MB 原圖編碼後約 9.3MB
- 服務穩定性 – 限制單文件大小可以保證 API 響應速度
- 內存管理 – 避免單次請求佔用過多服務器內存
如果需要上傳更大的圖片(最大 30MB),可以使用 Google Cloud Storage 中轉,但這會增加開發複雜度。

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 圖片超限解決方案
當你的圖片超過 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 圖片上傳還是失敗?
可能原因:
- 圖片格式不支持(如 GIF、BMP、TIFF)
- 圖片文件損壞
- 請求總大小超過 20MB(多張圖片場景)
建議先轉換爲 JPEG 格式,再通過 API易 apiyi.com 測試。
Q3: 通過 Cloud Storage 上傳 30MB 圖片的流程是什麼?
- 將圖片上傳到 Google Cloud Storage
- 獲取圖片的
gs://鏈接 - 在 API 請求中使用該鏈接替代 Base64 數據
- 這種方式支持最大 30MB 的圖片
注意:這需要額外配置 Google Cloud 賬號,對於大多數場景,壓縮到 7MB 以下更簡單。
總結
Nano Banana Pro (gemini-3-pro-image-preview) API 圖片限制的核心要點:
- 單張圖片限制 7MB: 內嵌數據或控制檯上傳的硬性上限,Cloud Storage 可達 30MB
- 支持 5 種格式: PNG、JPEG、WebP、HEIC、HEIF,不支持 GIF/BMP/TIFF
- 10 種寬高比: 從 1:1 到 21:9 全面覆蓋各類應用場景
- 超限解決方案: Python 壓縮、在線工具、命令行工具三種方式
掌握這些限制後,你可以更高效地使用 Nano Banana Pro 進行圖片編輯和生成。
推薦通過 API易 apiyi.com 測試 Nano Banana Pro,平臺提供免費額度和 JPEG 格式兼容優化,單張圖片僅需 $0.05。
📚 參考資料
⚠️ 鏈接格式說明: 所有外鏈使用
資料名: domain.com格式,方便複製但不可點擊跳轉,避免 SEO 權重流失。
-
Google Gemini API 圖片理解文檔: 官方圖片輸入規格說明
- 鏈接:
ai.google.dev/gemini-api/docs/image-understanding - 說明: 包含 MIME 類型和大小限制的官方文檔
- 鏈接:
-
Firebase AI Logic 輸入文件要求: 詳細的文件規格說明
- 鏈接:
firebase.google.com/docs/ai-logic/input-file-requirements - 說明: 包含所有支持的文件類型和限制
- 鏈接:
-
Pillow 圖片處理文檔: Python 圖片壓縮庫官方文檔
- 鏈接:
pillow.readthedocs.io - 說明: 學習圖片壓縮和格式轉換的最佳資源
- 鏈接:
作者: 技術團隊
技術交流: 歡迎在評論區討論,更多資料可訪問 API易 apiyi.com 技術社區
