作者注:详解 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 技术社区
