저자 주: Nano Banana Pro API 이미지 출력 형식 제어 방법을 상세히 설명합니다. base64 디코딩을 통해 PNG로 저장하는 방법과 전체 코드 예제를 포함하고 있습니다.
Nano Banana Pro API로 이미지를 생성할 때 많은 개발자분들이 겪는 고민이 있죠. "어떻게 하면 JPG가 아닌 PNG 형식을 강제할 수 있을까?" 하는 점인데요. 본 포스팅에서는 이 질문에 대한 상세한 답변과 함께 다양한 구현 솔루션을 제공해 드립니다.
핵심 가치: 이 글을 다 읽고 나면 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": "iVBORw0K..."
}
}
]
}
}]
}
주요 필드 설명:
| 필드 | 설명 |
|---|---|
inlineData.mimeType |
이미지의 MIME 유형, 보통 image/png로 표시됩니다. |
inlineData.data |
이미지의 base64 인코딩 문자열입니다. |
data 필드는 base64로 인코딩된 원본 이미지 데이터이므로, 이를 디코딩한 후 어떤 형식으로든 저장할 수 있습니다.

Nano Banana Pro 이미지 형식 컨트롤 퀵 스타트
방법 1: PNG로 직접 저장하기 (권장)
가장 간단한 방법은 저장할 때 파일 확장자를 .png로 직접 지정하는 거예요.
import google.generativeai as genai
import base64
# APIYI 접속 설정
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
)
팁: APIYI(apiyi.com)를 통해 Nano Banana Pro API 액세스 권한을 얻으세요. 플랫폼에서 안정적인 접속 서비스를 제공하며, 가격은 공식 홈페이지의 20% 수준으로 저렴하고 대량 호출도 지원합니다.
Nano Banana Pro 이미지 형식 솔루션 비교

| 형식 | 압축 유형 | 투명 채널 | 파일 크기 | 사용 시나리오 |
|---|---|---|---|---|
| PNG | 무손실 압축 | ✅ 지원 | 큼 | 디자인 소스, 아이콘, 투명 배경 필요 시 |
| JPEG | 손실 압축 | ❌ 미지원 | 작음 | 사진, 풍경 이미지, 네트워크 전송 |
| WebP | 무손실/손실 선택 가능 | ✅ 지원 | 최소 | 현대적인 웹 페이지, 모바일 앱 |
형식별 상세 설명
PNG 형식 사용 시나리오:
- 투명 배경을 유지해야 하는 디자인 소스
- 이미지 품질이 매우 중요한 경우
- 반복적인 편집이 필요한 중간 작업 소스
- 아이콘, 로고 등 경계선이 뚜렷해야 하는 이미지
JPEG 형식 사용 시나리오:
- 사진류 이미지 (풍경, 인물, 제품 실사)
- 네트워크 전송 시 파일 용량을 줄여야 하는 경우
- 소셜 미디어(SNS) 공유
- 투명 배경이 필요 없는 일반적인 이미지
WebP 형식 사용 시나리오:
- 현대적인 웹 애플리케이션 (높은 브라우저 지원율)
- 모바일 앱 내장 이미지
- 품질과 용량을 모두 챙겨야 하는 경우
- 애니메이션이 필요한 경우 (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 디코딩 방법 사용하기
- 파일을 바이너리 모드로 쓰기 (
"w"가 아닌"wb"사용)
문제가 계속된다면 API가 반환한 mimeType 필드를 확인하여 이미지 유형을 다시 한번 파악해 보세요.
Q2: PNG와 JPEG 중 AI 생성 이미지에 더 적합한 것은 무엇인가요?
사용 용도에 따라 달라요:
- PNG: 추가 편집이 필요하거나, 투명 배경이 필요할 때, 또는 아주 높은 품질을 유지해야 하는 경우에 적합해요.
- JPEG: 웹에 바로 게시하거나, 네트워크 전송이 잦을 때, 또는 파일 용량을 줄여야 하는 경우에 적합해요.
잘 모르겠다면 먼저 PNG(무손실)로 저장한 뒤, 나중에 필요에 따라 다른 형식으로 변환하는 것을 추천드려요.
Q3: Nano Banana Pro를 빠르게 테스트하려면 어떻게 해야 하나요?
APIYI 플랫폼을 사용하여 테스트하는 것을 추천드려요:
- APIYI(apiyi.com)에 접속하여 계정을 만드세요.
- Nano Banana Pro API Key를 발급받으세요.
- 이 글의 코드 예시를 활용해 보세요. 가격은 공식 사이트 대비 80%나 저렴합니다.
- 온라인 체험: 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는 현대적인 웹 애플리케이션에 적합해요.
base64 디코딩 원리를 이해하면 Nano Banana Pro가 생성한 이미지의 출력 형식을 완벽하게 제어할 수 있어요.
APIYI(apiyi.com)를 통해 Nano Banana Pro API 액세스 권한을 얻는 것을 추천드려요. 이 플랫폼은 안정적인 서비스를 제공하며, 가격은 공식 사이트의 20% 수준으로 대량 생성도 지원해요.
📚 참고 자료
⚠️ 링크 형식 설명: 모든 외부 링크는
자료명: 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 형식 변환을 지원하며 성능이 뛰어나요.
- 링크:
-
APIYI Nano Banana Pro 섹션: 연동 가이드
- 링크:
apiyi.com - 설명: 연동 문서, 코드 예시, 가격 정책 안내를 제공해요.
- 링크:
작성자: 기술팀
기술 교류: 댓글창에서 Nano Banana Pro 사용 팁을 자유롭게 공유해 주세요. 더 많은 자료는 APIYI(apiyi.com) 기술 커뮤니티에서 확인하실 수 있습니다.
