作者注:详解 Nano Banana Pro API 图片输出格式的控制方法,通过 base64 解码保存为 PNG,附完整代码示例
使用 Nano Banana Pro API 生成图片时,很多开发者会遇到一个问题:如何强制输出 PNG 而非 JPG 格式? 本文将详细解答这个问题,并提供多种实现方案。
核心价值: 读完本文,你将掌握 Nano Banana Pro 图片格式的控制原理,学会通过 base64 解码保存任意格式的图片。

Nano Banana Pro 图片格式输出核心要点
| 要点 | 说明 | 价值 |
|---|---|---|
| API 返回 base64 | inlineData 中包含图片的 base64 编码 | 原始数据格式中立 |
| 保存时可指定格式 | 解码 base64 后可保存为 PNG/JPG/WebP | 开发者完全控制输出 |
| 官方未提供格式参数 | Nano Banana Pro 无 output_mime_type 参数 | 需在客户端处理 |
| PNG 保留透明通道 | 适合需要透明背景的设计场景 | 质量无损压缩 |
| JPG 文件更小 | 适合照片类图片和网络传输 | 压缩比高 |
为什么官方没有提供格式控制参数?
查阅 Google AI 官方文档 ai.google.dev/gemini-api/docs/image-generation 可以发现,Nano Banana Pro(基于 Gemini 的原生图像生成)并没有像 Imagen 3 那样提供 output_mime_type 参数。
这是因为 Nano Banana Pro 的 API 响应设计与传统图像生成 API 不同:
- Imagen 3: 专用图像生成模型,支持
output_mime_type='image/jpeg'或'image/png'参数 - Nano Banana Pro: 多模态模型的图像生成能力,返回的是 base64 编码的原始图像数据
因此,Nano Banana Pro 的图片格式控制需要在客户端(保存时)处理,而非在 API 请求时指定。
inlineData 响应结构解析
Nano Banana Pro API 的响应结构如下:
{
"candidates": [{
"content": {
"parts": [
{
"inlineData": {
"mimeType": "image/png",
"data": "iVBORw0KGgoAAAANSUhEUgAA..."
}
}
]
}
}]
}
关键字段说明:
| 字段 | 说明 |
|---|---|
inlineData.mimeType |
图片的 MIME 类型,通常是 image/png |
inlineData.data |
图片的 base64 编码字符串 |
由于 data 字段是 base64 编码的原始图像数据,你可以在解码后保存为任意格式。

Nano Banana Pro 图片格式控制快速上手
方法一:直接保存为 PNG(推荐)
最简单的方法是在保存时直接指定 .png 扩展名:
import google.generativeai as genai
import base64
# 配置 API易 接入
genai.configure(
api_key="YOUR_API_KEY",
transport="rest",
client_options={"api_endpoint": "https://vip.apiyi.com"}
)
# 生成图片
model = genai.GenerativeModel("nano-banana-pro")
response = model.generate_content("一只可爱的橘猫,白色背景")
# 提取 base64 数据并保存为 PNG
for part in response.candidates[0].content.parts:
if hasattr(part, 'inline_data') and part.inline_data:
image_data = base64.b64decode(part.inline_data.data)
with open("output.png", "wb") as f:
f.write(image_data)
print("图片已保存为 PNG 格式")
查看完整的多格式保存代码
import google.generativeai as genai
import base64
from PIL import Image
import io
from typing import Literal
class NanoBananaImageSaver:
"""
Nano Banana Pro 图片格式转换工具
支持 PNG、JPG、WebP 等多种格式
"""
def __init__(self, api_key: str):
genai.configure(
api_key=api_key,
transport="rest",
client_options={"api_endpoint": "https://vip.apiyi.com"}
)
self.model = genai.GenerativeModel("nano-banana-pro")
def generate_and_save(
self,
prompt: str,
output_path: str,
format: Literal["PNG", "JPEG", "WEBP"] = "PNG",
quality: int = 95
) -> bool:
"""
生成图片并保存为指定格式
Args:
prompt: 生成提示词
output_path: 输出文件路径
format: 输出格式 (PNG/JPEG/WEBP)
quality: 压缩质量 (仅对 JPEG/WEBP 有效, 1-100)
"""
try:
response = self.model.generate_content(prompt)
for part in response.candidates[0].content.parts:
if hasattr(part, 'inline_data') and part.inline_data:
# 解码 base64
image_data = base64.b64decode(part.inline_data.data)
# 使用 PIL 打开并转换格式
image = Image.open(io.BytesIO(image_data))
# 处理透明通道 (PNG → JPEG 需要)
if format == "JPEG" and image.mode == "RGBA":
# 创建白色背景
background = Image.new("RGB", image.size, (255, 255, 255))
background.paste(image, mask=image.split()[3])
image = background
# 保存为指定格式
save_params = {}
if format in ["JPEG", "WEBP"]:
save_params["quality"] = quality
image.save(output_path, format=format, **save_params)
print(f"图片已保存: {output_path} (格式: {format})")
return True
return False
except Exception as e:
print(f"保存失败: {e}")
return False
# 使用示例
if __name__ == "__main__":
saver = NanoBananaImageSaver("YOUR_API_KEY")
# 保存为 PNG (无损,保留透明通道)
saver.generate_and_save(
prompt="现代建筑外观,透明背景",
output_path="building.png",
format="PNG"
)
# 保存为 JPEG (有损压缩,文件更小)
saver.generate_and_save(
prompt="风景照片,落日海滩",
output_path="sunset.jpg",
format="JPEG",
quality=85
)
# 保存为 WebP (现代格式,兼顾质量和体积)
saver.generate_and_save(
prompt="产品展示图",
output_path="product.webp",
format="WEBP",
quality=90
)
建议: 通过 API易 apiyi.com 获取 Nano Banana Pro API 访问权限。平台提供稳定的接入服务,价格仅为官网 2 折,支持批量调用。
Nano Banana Pro 图片格式方案对比

| 格式 | 压缩类型 | 透明通道 | 文件大小 | 适用场景 |
|---|---|---|---|---|
| PNG | 无损压缩 | ✅ 支持 | 较大 | 设计素材、图标、需要透明背景 |
| JPEG | 有损压缩 | ❌ 不支持 | 较小 | 照片、风景图、网络传输 |
| WebP | 无损/有损可选 | ✅ 支持 | 最小 | 现代网页、移动端应用 |
各格式详细说明
PNG 格式适用场景:
- 需要保留透明背景的设计素材
- 对图像质量要求极高的场景
- 需要反复编辑的中间素材
- 图标、Logo 等需要锐利边缘的图像
JPEG 格式适用场景:
- 照片类图像(风景、人像、产品实拍)
- 网络传输需要控制文件大小
- 社交媒体分享
- 不需要透明背景的一般图像
WebP 格式适用场景:
- 现代 Web 应用(浏览器支持度高)
- 移动端 App 内嵌图片
- 需要同时兼顾质量和体积的场景
- 支持动画的场景(可替代 GIF)
Nano Banana Pro 图片格式转换进阶用法
Node.js 版本实现
const { GoogleGenerativeAI } = require("@google/generative-ai");
const fs = require("fs");
const sharp = require("sharp");
async function generateAndSave(prompt, outputPath, format = "png") {
const genAI = new GoogleGenerativeAI("YOUR_API_KEY");
const model = genAI.getGenerativeModel({ model: "nano-banana-pro" });
const result = await model.generateContent(prompt);
const response = await result.response;
for (const part of response.candidates[0].content.parts) {
if (part.inlineData) {
const buffer = Buffer.from(part.inlineData.data, "base64");
// 使用 sharp 转换格式
let sharpInstance = sharp(buffer);
switch (format.toLowerCase()) {
case "png":
sharpInstance = sharpInstance.png();
break;
case "jpeg":
case "jpg":
sharpInstance = sharpInstance.jpeg({ quality: 85 });
break;
case "webp":
sharpInstance = sharpInstance.webp({ quality: 90 });
break;
}
await sharpInstance.toFile(outputPath);
console.log(`图片已保存: ${outputPath}`);
}
}
}
// 强制输出 PNG
generateAndSave("可爱的卡通角色", "character.png", "png");
cURL 命令行版本
# 调用 API 并保存为 PNG
curl -X POST "https://vip.apiyi.com/v1/models/nano-banana-pro:generateContent" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{"contents":[{"parts":[{"text":"一只可爱的橘猫"}]}]}' \
| jq -r '.candidates[0].content.parts[] | select(.inlineData) | .inlineData.data' \
| base64 --decode > output.png
echo "图片已保存为 output.png"
常见问题
Q1: 为什么我保存的图片打不开?
最常见的原因是 base64 解码不正确。确保:
- 提取的是
inline_data.data字段的完整内容 - 使用正确的 base64 解码方法
- 以二进制模式写入文件(
"wb"而非"w")
如果问题仍然存在,检查 API 返回的 mimeType 字段,确认图片类型。
Q2: PNG 和 JPEG 哪个更适合 AI 生成的图片?
取决于用途:
- PNG: 适合需要后续编辑、透明背景、或对质量要求极高的场景
- JPEG: 适合直接发布、网络传输、或需要控制文件大小的场景
如果你不确定,建议先保存为 PNG(无损),需要时再转换为其他格式。
Q3: 如何快速开始测试 Nano Banana Pro?
推荐使用 API易 平台进行测试:
- 访问 API易 apiyi.com 注册账号
- 获取 Nano Banana Pro API Key
- 使用本文的代码示例,价格仅为官网 2 折
- 在线体验: imagen.apiyi.com 可直接测试出图效果
总结
Nano Banana Pro 图片格式控制的核心要点:
- API 返回 base64 编码: inlineData.data 是格式中立的原始数据,保存时可自由选择格式
- 官方未提供格式参数: 与 Imagen 3 不同,Nano Banana Pro 不支持 output_mime_type 参数
- 客户端控制输出格式: 通过 base64 解码后使用 PIL/sharp 等工具保存为 PNG/JPEG/WebP
- 根据场景选择格式: PNG 适合设计素材,JPEG 适合照片,WebP 适合现代 Web 应用
理解了 base64 解码原理后,你可以完全控制 Nano Banana Pro 生成图片的输出格式。
推荐通过 API易 apiyi.com 获取 Nano Banana Pro API 访问权限,平台提供稳定服务,价格仅为官网 2 折,支持批量生成。
📚 参考资料
⚠️ 链接格式说明: 所有外链使用
资料名: domain.com格式,方便复制但不可点击跳转,避免 SEO 权重流失。
-
Google AI 图像生成文档: 官方 API 最佳实践指南
- 链接:
ai.google.dev/gemini-api/docs/image-generation - 说明: 包含 inlineData 响应结构和代码示例
- 链接:
-
Pillow (PIL) 文档: Python 图像处理库
- 链接:
pillow.readthedocs.io - 说明: 支持多种图片格式的读取、转换和保存
- 链接:
-
Sharp 文档: Node.js 高性能图像处理库
- 链接:
sharp.pixelplumbing.com - 说明: 支持 PNG/JPEG/WebP 格式转换,性能优秀
- 链接:
-
API易 Nano Banana Pro 专区: 中文接入文档
- 链接:
apiyi.com - 说明: 提供中文文档、代码示例、定价说明
- 链接:
作者: 技术团队
技术交流: 欢迎在评论区讨论 Nano Banana Pro 使用技巧,更多资料可访问 API易 apiyi.com 技术社区
