Nano Banana Pro API 단일 이미지 제한은 얼마인가요? 7MB 상한선 완전 분석 및 해결 방안

Nano Banana Pro (gemini-3-pro-image-preview) API를 사용할 때 이미지 업로드 실패를 경험하신 적 있으신가요? 이 글에서는 단일 이미지 7MB 제한 사항과 초과 시 해결 방법을 상세히 알려드릴게요.

핵심 가치: 이 글을 읽으시면 Nano Banana Pro 이미지 업로드의 모든 규격 제한을 파악하고, 용량 초과 이미지를 압축하는 3가지 방법을 배우실 수 있어요.

nano-banana-pro-api-image-size-limit-7mb-ko 图示


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입니다. 이 제한이 설계된 이유는:

  1. 전송 효율성 – Base64 인코딩 후 이미지 용량이 약 33% 증가하므로, 7MB 원본은 인코딩 후 약 9.3MB가 되죠
  2. 서비스 안정성 – 단일 파일 크기를 제한하면 API 응답 속도를 보장할 수 있어요
  3. 메모리 관리 – 단일 요청이 서버 메모리를 과도하게 점유하는 것을 방지해요

더 큰 이미지(최대 30MB)를 업로드해야 한다면 Google Cloud Storage를 중개로 사용할 수 있지만, 개발 복잡도가 증가하게 돼요.

nano-banana-pro-api-image-size-limit-7mb-ko 图示


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-image-size-limit-7mb-ko 图示


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 이미지 업로드가 실패하나요?

가능한 원인:

  1. 지원하지 않는 이미지 형식 (예: GIF, BMP, TIFF)
  2. 이미지 파일 손상
  3. 전체 요청 크기가 20MB 초과 (여러 이미지 업로드 시)

먼저 JPEG 형식으로 변환한 후 APIYI apiyi.com을 통해 테스트해 보세요.

Q3: Cloud Storage를 통해 30MB 이미지를 업로드하는 절차는 어떻게 되나요?
  1. Google Cloud Storage에 이미지 업로드
  2. 이미지의 gs:// 링크 획득
  3. API 요청에서 Base64 데이터 대신 해당 링크 사용
  4. 이 방식은 최대 30MB 이미지 지원

참고: Google Cloud 계정 추가 설정이 필요하며, 대부분의 경우 7MB 이하로 압축하는 것이 더 간단합니다.


정리

Nano Banana Pro (gemini-3-pro-image-preview) API 이미지 제한의 핵심 포인트:

  1. 단일 이미지 7MB 제한: 임베드 데이터나 콘솔 업로드의 경우 엄격한 상한선, Cloud Storage 사용 시 30MB까지 가능
  2. 5가지 형식 지원: PNG, JPEG, WebP, HEIC, HEIF 지원, GIF/BMP/TIFF는 미지원
  3. 10가지 종횡비: 1:1부터 21:9까지 다양한 활용 사례 완벽 지원
  4. 용량 초과 해결책: Python 압축, 온라인 도구, 커맨드라인 도구 세 가지 방법 제공

이러한 제한사항을 잘 이해하면 Nano Banana Pro를 활용한 이미지 편집 및 생성 작업을 훨씬 효율적으로 진행할 수 있습니다.

APIYI apiyi.com을 통해 Nano Banana Pro를 테스트해 보세요. 플랫폼은 무료 크레딧과 JPEG 형식 호환성 최적화를 제공하며, 단일 이미지당 $0.05만 청구됩니다.


📚 참고 자료

⚠️ 링크 형식 안내: 모든 외부 링크는 자료명: domain.com 형식으로 표시됩니다. 복사는 가능하지만 클릭은 불가능하여 SEO 권중 손실을 방지합니다.

  1. Google Gemini API 이미지 이해 문서: 공식 이미지 입력 사양 설명

    • 링크: ai.google.dev/gemini-api/docs/image-understanding
    • 설명: MIME 타입과 크기 제한에 대한 공식 문서
  2. Firebase AI Logic 입력 파일 요구사항: 상세한 파일 사양 설명

    • 링크: firebase.google.com/docs/ai-logic/input-file-requirements
    • 설명: 지원되는 모든 파일 타입과 제한사항 포함
  3. Pillow 이미지 처리 문서: Python 이미지 압축 라이브러리 공식 문서

    • 링크: pillow.readthedocs.io
    • 설명: 이미지 압축과 포맷 변환을 배우기 위한 최고의 자료

저자: 기술팀
기술 교류: 댓글로 자유롭게 토론해 주세요. 더 많은 자료는 APIYI apiyi.com 기술 커뮤니티에서 확인하실 수 있습니다.