
AI로 이미지를 편집할 때 많은 개발자들이 가장 궁금해하는 질문은 바로 이거죠: 이미지의 특정 부분만 수정하고 나머지 부분은 그대로 유지할 수 있을까? 이것이 인페인팅(inpainting, 로컬 복구/로컬 편집) 기술이 해결하려는 핵심 문제입니다.
좋은 소식은, Nano Banana 시리즈 모델이 정말로 인페인팅 로컬 편집을 지원한다는 점입니다. 게다가 기존 방식보다 훨씬 강력한 마스크 프리(mask-free, 마스크 없음) 편집 능력을 제공해요. 이 글에서는 API를 통해 로컬 편집을 구현하는 3가지 방법을 자세히 설명하고, 여러분에게 가장 적합한 기술 경로를 빠르게 선택할 수 있도록 도와드리겠습니다.
핵심 가치: 이 글을 다 읽으시면, Nano Banana 인페인팅 API의 3가지 호출 방식을 마스터하고, 여러분의 프로젝트에서 전문가 수준의 AI 로컬 편집 기능을 구현할 수 있게 될 거예요.
Nano Banana 인페인팅 능력 개요: 로컬 편집 3가지 솔루션
많은 개발자들이 흔히 하는 오해가 하나 있어요. Nano Banana는 이미지 생성만 가능하고 인페인팅은 지원하지 않는다고 생각하는 거죠. 실제로는 Nano Banana가 인페인팅을 지원할 뿐만 아니라, 다양한 구현 경로를 제공하고 있습니다.
| 솔루션 | 모델 | 원리 | 정밀도 | 속도 | 적합한 시나리오 |
|---|---|---|---|---|---|
| 솔루션 1: 마스크 프리 자연어 편집 | Nano Banana 2 | 텍스트 명령 + 원본 이미지 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 빠른 편집, 배경 교체 |
| 솔루션 2: 마스크 기반 정밀 수정 | Nano Banana Pro Edit | 마스크 + 텍스트 명령 + 원본 이미지 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | 정밀 영역 제어 |
| 솔루션 3: 멀티턴 대화 반복 편집 | Nano Banana 2 | 멀티턴 대화 + 컨텍스트 | ⭐⭐⭐⭐ | ⭐⭐⭐ | 복잡한 편집, 단계별 최적화 |
Nano Banana 인페인팅과 기존 솔루션의 핵심 차이점
기존 인페인팅 도구(예: Stable Diffusion Inpainting)는 개발자가 수동으로 흑백 마스크(mask)를 그려서 수정할 영역을 지정해야 해요. 반면 Nano Banana의 핵심 돌파구는 다음과 같습니다:
- 의미 이해 주도: 모델이 "배경을 해변으로 바꿔줘" 같은 자연어 명령을 이해하고, 배경 영역을 자동으로 인식할 수 있어요.
- 컨텍스트 인식: 로컬을 수정할 때 주변 환경의 조명, 원근감, 색상을 자동으로 매칭해요.
- 마스크 불필요: 대부분의 편집 시나리오에서 수동 마스크 제작이 필요 없어 개발 진입 장벽이 낮아졌어요.
🎯 기술 제안: Nano Banana의 인페인팅 능력은 표준 OpenAI 호환 인터페이스를 통해 제공됩니다. APIYI apiyi.com 플랫폼을 통해 호출하는 것을 권장해요. Nano Banana 2와 Nano Banana Pro 두 모델의 호출을 통합 관리할 수 있어, 다양한 솔루션 간 전환 테스트가 편리해집니다.
방법 1: Mask-Free 자연어 인페인팅 (입문 추천)
이것이 Nano Banana 인페인팅의 가장 강력한 기능 중 하나입니다—마스크가 필요 없고, 단지 텍스트 설명만으로도 이미지의 일부를 수정할 수 있습니다.
Nano Banana Mask-Free 인페인팅 핵심 원리
Nano Banana 2 (Gemini 3.1 Flash Image 기반)는 시맨틱 세그멘테이션 능력을 내장하고 있어, 모델이 다음과 같은 작업을 수행합니다:
- 편집 명령어 해석 — 사용자가 이미지의 어느 부분을 수정하고 싶은지 이해합니다.
- 자동 영역 인식 — 의미론적 이해를 통해 수정이 필요한 픽셀 영역을 찾아냅니다.
- 컨텍스트 추론 — 조명 방향, 원근 관계, 3D 공간 관계를 분석합니다.
- 정밀 교체 — 주변 환경을 일관되게 유지하면서 목표 영역을 수정합니다.
Mask-Free 인페인팅 최소한의 코드 예시
import openai
import base64
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1" # APIYI 통합 인터페이스
)
response = client.chat.completions.create(
model="gemini-2.5-flash-image-preview",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "Remove the person from this photo and fill the area with the surrounding background naturally"},
{"type": "image_url", "image_url": {"url": "https://example.com/your-photo.jpg"}}
]
}]
)
# 편집된 이미지 추출
content = response.choices[0].message.content
print("편집 완료, 이미지 데이터 추출 중...")
Nano Banana 인페인팅 자주 쓰는 편집 명령어 템플릿
| 편집 유형 | 영어 명령어 템플릿 | 한국어 설명 |
|---|---|---|
| 객체 제거 | Remove the [object] from the image and fill naturally |
지정된 객체를 제거하고 자연스럽게 채웁니다 |
| 배경 교체 | Replace the background with [new scene] |
배경 장면을 교체합니다 |
| 요소 추가 | Add a [object] to the [position] of the image |
지정된 위치에 요소를 추가합니다 |
| 속성 수정 | Change the [object]'s color from [A] to [B] |
객체의 색상을 변경합니다 |
| 배경 블러 | Blur the background while keeping the foreground sharp |
배경을 흐리게 합니다 |
| 결함 복구 | Remove the stain/scratch from the [area] |
얼룩이나 긁힘을 제거합니다 |
| 자세 조정 | Change the person's pose to [description] |
사람의 자세를 조정합니다 |
| 스타일 변환 | Convert the [area] to watercolor painting style |
특정 영역의 스타일을 변환합니다 |

Mask-Free 인페인팅 전체 코드 보기 (이미지 저장 및 오류 처리 포함)
#!/usr/bin/env python3
"""
Nano Banana Mask-Free 인페인팅 완전한 예시
자연어 명령어를 통한 이미지 일부 편집
"""
import openai
import base64
import re
from datetime import datetime
# 설정
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.apiyi.com/v1"
client = openai.OpenAI(api_key=API_KEY, base_url=BASE_URL)
def inpaint_image(image_url: str, edit_instruction: str, output_path: str = None):
"""
Mask-Free 인페인팅을 사용하여 이미지 편집
Args:
image_url: 원본 이미지 URL 또는 base64 data URI
edit_instruction: 영어 편집 명령어
output_path: 출력 파일 경로 (선택 사항)
Returns:
bool: 성공 여부
"""
print(f"📝 편집 명령어: {edit_instruction}")
print(f"🖼️ 원본 이미지: {image_url[:80]}...")
try:
response = client.chat.completions.create(
model="gemini-2.5-flash-image-preview",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": f"Generate an image: {edit_instruction}"},
{"type": "image_url", "image_url": {"url": image_url}}
]
}]
)
content = response.choices[0].message.content
# base64 이미지 데이터 추출
patterns = [
r'data:image/[^;]+;base64,([A-Za-z0-9+/=]+)',
r'([A-Za-z0-9+/=]{1000,})'
]
base64_data = None
for pattern in patterns:
match = re.search(pattern, content)
if match:
base64_data = match.group(1)
break
if not base64_data:
print(f"⚠️ 이미지 데이터를 찾을 수 없습니다, 모델 응답: {content[:200]}")
return False
# 이미지 저장
if not output_path:
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
output_path = f"inpainted_{timestamp}.png"
image_bytes = base64.b64decode(base64_data)
with open(output_path, 'wb') as f:
f.write(image_bytes)
print(f"✅ 편집 완료! 저장 위치: {output_path} ({len(image_bytes):,} 바이트)")
return True
except Exception as e:
print(f"❌ 편집 실패: {e}")
return False
# 사용 예시
if __name__ == "__main__":
# 예시 1: 객체 제거
inpaint_image(
image_url="https://example.com/photo-with-person.jpg",
edit_instruction="Remove the person on the right side and fill with natural background",
output_path="result_remove_person.png"
)
# 예시 2: 배경 교체
inpaint_image(
image_url="https://example.com/portrait.jpg",
edit_instruction="Replace the background with a sunset beach scene, keep the person unchanged",
output_path="result_new_background.png"
)
# 예시 3: 부분 속성 수정
inpaint_image(
image_url="https://example.com/room.jpg",
edit_instruction="Change the wall color to light blue, keep furniture unchanged",
output_path="result_wall_color.png"
)
방법 2: Mask-Based 정밀 인페인팅 (고급 사용법)
픽셀 단위로 정밀하게 수정 영역을 제어해야 할 때는 Nano Banana Pro Edit의 마스크 모드를 사용할 수 있습니다.
Mask-Based 인페인팅 작동 원리
이 모드는 흑백 마스크 이미지를 제공해야 합니다. 흰색 영역은 수정할 부분을, 검은색 영역은 그대로 유지할 부분을 나타냅니다.
| 매개변수 | 설명 | 요구사항 |
|---|---|---|
| 원본 이미지 | 편집할 이미지 | PNG/JPEG, 4096×4096 이하 권장 |
| 마스크 이미지 | 편집 영역을 표시하는 흑백 이미지 | 원본 이미지와 동일한 크기, 흰색=편집 영역 |
| 편집 지시문 | 흰색 영역을 어떻게 채울지 설명 | 영어 지시문이 가장 효과적 |
Mask-Based 인페인팅 코드 예시
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1"
)
# 다중 이미지 입력: 원본 + 마스크 + 텍스트 지시문
response = client.chat.completions.create(
model="gemini-2.5-flash-image-preview",
messages=[{
"role": "user",
"content": [
{
"type": "text",
"text": "Generate an image: The first image is the original photo. The second image is a mask where white areas indicate regions to edit. Replace the masked area with a beautiful garden scene."
},
{"type": "image_url", "image_url": {"url": "https://example.com/original.jpg"}},
{"type": "image_url", "image_url": {"url": "https://example.com/mask.png"}}
]
}]
)
Mask-Based 인페인팅을 선택해야 할 때
- 정밀 제어가 필요한 편집 경계 (예: 피부는 건드리지 않고 셔츠만 수정)
- 편집 영역이 불규칙한 형태여서 자연어로 정확히 설명하기 어려운 경우
- 동일한 영역을 일괄 처리해야 하는 여러 이미지가 있는 경우
- 가장자리 전환에 대한 요구사항이 높은 전문적인 시나리오
💡 실용 팁: 마스크를 만드는 가장 쉬운 방법은 Photoshop이나 GIMP에서 수정할 영역을 브러시로 흰색으로 칠한 후 PNG로 내보내는 것입니다. 수동으로 마스크를 만드는 것이 번거롭다면, 방법 1의 Mask-Free 모드가 대부분의 시나리오에서 충분히 유용합니다.
방법 3: 다중 대화 인페인팅 (반복 최적화)
Nano Banana 2는 다중 편집을 지원합니다. 한 번의 세션에서 이전 라운드의 결과를 기반으로 계속해서 수정할 수 있어, 세밀한 조정이 필요한 경우에 특히 적합합니다.
다중 인페인팅 대화 흐름
1라운드: "배경을 사무실로 바꿔줘" → 편집된 이미지 A 획득
2라운드: 이미지 A + "책상 위 컵을 노트북으로 바꿔줘" → 편집된 이미지 B 획득
3라운드: 이미지 B + "전체 조명을 밝게 하고 창문 빛 효과를 추가해줘" → 최종 이미지 C 획득
다중 인페인팅 코드 구현
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1"
)
# 다중 대화 구성
messages = [
# 1라운드: 초기 편집
{
"role": "user",
"content": [
{"type": "text", "text": "Replace the background with a modern office scene"},
{"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}}
]
}
]
# 1라운드 요청
response_1 = client.chat.completions.create(
model="gemini-2.5-flash-image-preview",
messages=messages
)
# 1라운드 결과를 컨텍스트에 추가
messages.append({"role": "assistant", "content": response_1.choices[0].message.content})
# 2라운드: 이전 라운드 기반 추가 편집
messages.append({
"role": "user",
"content": [{"type": "text", "text": "Now add a laptop on the desk and make the lighting warmer"}]
})
response_2 = client.chat.completions.create(
model="gemini-2.5-flash-image-preview",
messages=messages
)

Nano Banana Inpainting 모델 버전 비교
어떤 Nano Banana 모델을 선택할지는 여러분의 인페인팅(inpainting) 요구사항에 따라 달라집니다:
| 비교 항목 | Nano Banana 2 | Nano Banana Pro | 설명 |
|---|---|---|---|
| 모델 ID | gemini-3.1-flash-image-preview |
gemini-3.0-pro-image |
– |
| Mask-Free 편집 | ✅ 지원 | ✅ 지원 | 둘 다 자연어 편집을 지원합니다 |
| 편집 정밀도 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | Pro 버전의 의미 이해가 더 섬세합니다 |
| 생성 속도 | 3-8초 | 10-20초 | Flash 아키텍처가 3-5배 빠릅니다 |
| 최대 해상도 | 4K (4096px) | 2K (2048px) | Banana 2가 해상도가 더 높습니다 |
| 다중 라운드 편집 | ✅ 지원 | ✅ 지원 | 둘 다 다중 대화를 지원합니다 |
| API 가격 | ~$0.02/회 | ~$0.04/회 | Banana 2가 비용이 절반입니다 |
| 추천 시나리오 | 대량 편집, 빠른 반복 | 전문 리터칭, 고정밀 요구 | APIYI apiyi.com 플랫폼을 통해 동시 호출 가능 |
Nano Banana Inpainting 모델 선택 가이드
- 일상 편집, 대량 처리: Nano Banana 2 선택 — 속도 빠름, 비용 저렴, 4K 해상도
- 전문 리터칭, 상업용 소재: Nano Banana Pro 선택 — 가장 섬세한 의미 이해와 색상 재현
- 어떤 걸 쓸지 모르겠다면: 먼저 Nano Banana 2로 테스트해보고, 만족스럽지 않으면 Pro로 전환
Nano Banana Inpainting과 Gemini 웹 버전 편집의 차이점
많은 사용자들이 Gemini 웹 버전(gemini.google.com)에서 이미지 편집 기능을 경험해본 후 묻습니다: 이 API도 똑같이 할 수 있나요?
답은 할 수 있지만, 차이가 있습니다:
| 항목 | Gemini 웹 버전 | Nano Banana API |
|---|---|---|
| 상호작용 방식 | 마우스로 영역 선택 + 텍스트 설명 | 순수 API 호출 (텍스트 + 이미지) |
| 마스크 제작 | 웹에 내장된 브러시 도구 | 마스크 이미지를 직접 준비하거나 mask-free 모드 사용 |
| 제어 정밀도 | 시각적 영역 선택, 직관적 | 코드 수준 제어, 자동화 가능 |
| 일괄 처리 | 미지원 | ✅ 일괄 호출 지원 |
| 워터마크 | SynthID 워터마크 있음 | SynthID 워터마크 있음 |
| 통합 능력 | 웹에서만 사용 가능 | 어떤 애플리케이션에도 내장 가능 |
| 가격 | 무료 (제한 있음) | 횟수별 과금 |
핵심 차이점: Gemini 웹 버전의 이미지 편집 경험은 더 대화형이고 시각적입니다. 사용자가 직접 마우스로 영역을 그릴 수 있죠. 반면 API 버전의 핵심 장점은 자동화와 규모화에 있습니다 — 코드에서 이미지를 일괄 처리하고 제품 워크플로우에 내장할 수 있습니다.
🎯 기술적 조언: 여러분의 요구사항이 자신의 제품에 AI 이미지 편집 기능을 통합하는 것이라면, API가 유일한 선택입니다. APIYI apiyi.com 플랫폼을 통해 더 안정적인 인터페이스 접근과 기술 지원을 받을 수 있습니다.
Nano Banana Inpainting 최적의 실천 방법
편집 지령 최적화 기술
좋은 편집 지령은 inpainting 효과를 크게 향상시킬 수 있습니다:
| 기술 | 나쁜 지령 ❌ | 좋은 지령 ✅ |
|---|---|---|
| 구체적 묘사 | "배경 좀 바꿔줘" | "Replace the background with a sunset beach, warm golden light" |
| 보존 영역 지정 | "배경 바꾸기" | "Replace the background while keeping the person completely unchanged" |
| 조명 설명 | "조명 좀 추가해줘" | "Add soft warm lighting from the upper left, casting gentle shadows" |
| 재질 묘사 | "바닥 바꾸기" | "Replace the floor with light oak hardwood flooring with visible grain" |
| 범위 제한 | "색깔 바꾸기" | "Change only the car's body color to midnight blue, keep windows and tires unchanged" |
Nano Banana Inpainting 성능 최적화 제안
- 입력 이미지 전처리 — 1024×1024에서 2048×2048 사이를 권장합니다. 너무 크면 처리 시간이 증가합니다.
- 영어 지령 우선 — 영어 지령의 이해 정확도가 중국어보다 훨씬 높습니다.
- 한 번에 하나의 수정에 집중 — 복잡한 편집은 여러 단계로 나누고, 각 단계에서는 한 가지만 수행하세요.
- "Generate an image:" 접두사 추가 — 모델에게 텍스트 응답이 아닌 이미지를 출력하라고 명확히 알려주세요.
자주 묻는 질문
Q1: Nano Banana API가 정말 inpainting을 지원하나요? 웹 버전에만 있는 기능 아닌가요?
네, Nano Banana API는 inpainting(부분 이미지 편집)을 완전히 지원합니다. Nano Banana 2(gemini-3.1-flash-image-preview)와 Nano Banana Pro(gemini-3.0-pro-image) 모두 API를 통한 이미지 편집을 지원합니다. 가장 강력한 기능은 마스크 없는 inpainting(mask-free inpainting) 입니다. 마스크를 만들 필요 없이, 자연어로 편집 요구사항을 설명하면 모델이 자동으로 대상 영역을 인식하고 수정합니다. APIYI apiyi.com 플랫폼을 통해 API 키를 빠르게 획득하여 테스트를 시작할 수 있습니다.
Q2: Mask-Free와 Mask-Based Inpainting 중 어떤 것이 효과가 더 좋나요?
상황에 따라 다릅니다. 배경 교체, 객체 제거, 색상 변경 등 일반적인 요구사항에는 Mask-Free 모드가 이미 충분히 정확하며 더 편리합니다. 경계선 제어가 극도로 엄격해야 하는 상황(예: 피부에 영향을 주지 않고 셔츠 무늬만 수정)에는 Mask-Based 모드가 더 정밀한 제어를 제공합니다. 먼저 Mask-Free 모드로 테스트해보고, 만족스럽지 않을 경우 마스크를 사용하는 것을 권장합니다. APIYI apiyi.com 플랫폼은 두 가지 모드 호출을 모두 지원하며, 전환이 매우 편리합니다.
Q3: Nano Banana의 inpainting이 Photoshop 수준의 효과를 낼 수 있나요?
많은 상황에서 Photoshop의 콘텐츠 인식 채우기(Content-Aware Fill)에 매우 근접하거나 심지어 능가합니다. Nano Banana의 장점은 장면의 의미를 이해한다는 점입니다. 예를 들어, 사람을 제거한 후 그 뒤에 어떤 건물이나 풍경이 있어야 하는지 알고, 단순한 텍스처 채우기가 아닙니다. 하지만 극도로 정밀한 상업용 리터칭의 경우, 최종 조정을 위해 Photoshop과 함께 사용하는 것을 권장합니다.
Q4: 제 편집 지령이 가끔 작동하지 않고, 모델이 완전히 새로운 이미지를 생성하는 이유는 무엇인가요?
이것은 흔히 발생하는 문제입니다. 지령이 "생성"이 아닌 "편집"을 명확히 표현하는지 확인하세요. 지령 앞에 "Generate an image:" 접두사를 추가하고, 원본 이미지의 어떤 부분을 보존할지 명확히 설명하는 것을 권장합니다. 예: "Generate an image: Edit the original photo - replace only the sky with a starry night, keep everything else exactly the same". 문제가 지속되면 "Do not change the composition or layout"를 추가하여 모델을 제약해 볼 수 있습니다.
Q5: Nano Banana Inpainting API 호출 비용은 얼마인가요?
Nano Banana 2의 이미지 편집은 약 $0.02/회, Nano Banana Pro는 약 $0.04/회입니다. APIYI apiyi.com 플랫폼을 통해 호출하면 더 저렴한 가격을 이용할 수 있으며, 실제 비용은 약 ¥0.14/회(Nano Banana 2)로, 대량 이미지 편집 시나리오에 적합합니다.
요약
Nano Banana의 inpainting(부분 수정) 기능은 많은 개발자들이 생각하는 것보다 훨씬 강력합니다. 3가지 방법은 각각 다른 상황에 적합합니다:
- Mask-Free 자연어 편집 — 가장 편리하며, 대부분의 상황에 적합하고 우선적으로 사용하는 것을 권장합니다.
- Mask-Based 정밀 수정 — 가장 정밀하며, 전문적인 픽셀 제어가 필요한 경우에 적합합니다.
- 다중 턴 대화 반복 편집 — 가장 유연하며, 복잡한 점진적 수정 작업에 적합합니다.
어떤 방법을 선택하든, 핵심은 표준 Chat Completions API를 통해 이미지와 편집 지시를 전송하는 것입니다. APIYI(apiyi.com) 플랫폼을 통해 빠르게 테스트를 시작하고, 5분 안에 첫 번째 inpainting 예제를 실행해 보는 것을 추천합니다.
참고 자료
-
Google AI 공식 문서 – Nano Banana 이미지 생성
- 링크:
ai.google.dev/gemini-api/docs/image-generation - 설명: Gemini 이미지 생성 및 편집 API 전체 문서
- 링크:
-
Google Developers 블로그 – Gemini 2.5 Flash Image
- 링크:
developers.googleblog.com/introducing-gemini-2-5-flash-image/ - 설명: Nano Banana 기술 아키텍처 및 기능 상세 설명
- 링크:
-
DataCamp – Gemini 2.5 Flash Image 완전 가이드
- 링크:
datacamp.com/tutorial/gemini-2-5-flash-image-guide - 설명: 완전한 코드 예제 및 실습 가이드
- 링크:
📝 저자: APIYI Team | 기술 교류 및 API 접속은 apiyi.com을 방문해 주세요
