Nano Banana Pro (gemini-3-pro-image-preview) 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 | 출력 토큰 제한의 영향을 받음 |
왜 7MB일까요?
Google 공식 문서에서 명확하게 밝히고 있어요: 인라인 데이터 또는 콘솔을 통한 직접 업로드 시 각 파일의 크기 상한은 7MB입니다. 이 제한이 설계된 이유는:
- 전송 효율성 – 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 | 미지원 | 형식 변환 필요 |
APIYI의 JPEG 형식 호환성 최적화
주목할 점은 APIYI apiyi.com 플랫폼이 JPEG 형식에 대해 추가적인 호환성 최적화를 제공한다는 거예요. 일부 구버전 JPEG 파일은 Google API를 직접 호출할 때 형식 인식 문제가 발생할 수 있는데, APIYI를 통해 중계하면 이런 호환성 문제를 자동으로 처리해줘요.
🎯 형식 추천: 일상적으로는 JPEG나 WebP 형식을 추천해요. 용량이 작고 호환성이 좋거든요. PNG는 투명 배경이 필요한 경우에 적합해요. APIYI 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가지 추천 해결 방법을 소개할게요:
방법 1: 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)
방법 2: 온라인 압축 도구
코드 작성이 부담스럽다면 온라인 도구를 사용해보세요:
- TinyPNG: tinypng.com – PNG/JPEG 스마트 압축
- Squoosh: squoosh.app – Google이 만든 오픈소스 이미지 압축 도구
- iLoveIMG: iloveimg.com – 일괄 압축 지원
방법 3: 커맨드 라인 도구
ImageMagick을 사용하면 빠르게 압축할 수 있어요:
# 지정된 크기로 압축 (약 7MB)
convert input.png -quality 85 -define jpeg:extent=7MB output.jpg
# 크기와 품질 동시 조정
convert input.png -resize 4096x4096\> -quality 80 output.jpg
팁: APIYI apiyi.com을 통해 Nano Banana Pro를 호출하면 무료 테스트 크레딧을 제공하니까, 압축한 이미지가 제대로 처리되는지 확인하기 좋아요.
Nano Banana Pro API 자주 발생하는 오류 및 해결법
| 오류 메시지 | 원인 | 해결 방법 |
|---|---|---|
File size exceeds limit |
이미지 1장이 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 형식으로 변환한 후 APIYI 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를 활용한 이미지 편집 및 생성 작업을 훨씬 효율적으로 진행할 수 있습니다.
APIYI 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 - 설명: 이미지 압축과 포맷 변환을 배우기 위한 최고의 자료
- 링크:
저자: 기술팀
기술 교류: 댓글로 자유롭게 토론해 주세요. 더 많은 자료는 APIYI apiyi.com 기술 커뮤니티에서 확인하실 수 있습니다.
