作者注:詳解 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 技術社區
