
Ao usar IA para editar imagens, uma das principais preocupações dos desenvolvedores é: é possível modificar apenas uma parte específica da imagem, sem afetar o resto? É exatamente isso que a tecnologia de inpainting (reparo local/edição local) busca resolver.
A boa notícia é que a série de modelos Nano Banana realmente suporta inpainting para edição local, e oferece uma capacidade de edição mask-free (sem máscara) mais poderosa do que as soluções tradicionais. Este artigo detalha 3 maneiras de implementar a edição local via API, ajudando você a escolher rapidamente a abordagem técnica mais adequada.
Valor principal: Ao final deste artigo, você dominará 3 métodos de invocação da API de inpainting do Nano Banana, permitindo implementar funcionalidades de edição local por IA de nível profissional em seus próprios projetos.
Panorama da capacidade de Inpainting do Nano Banana: 3 abordagens para edição local
Muitos desenvolvedores têm um equívoco comum: acreditam que o Nano Banana só consegue gerar imagens e não suporta inpainting. Na verdade, o Nano Banana não apenas suporta inpainting, como oferece múltiplos caminhos para implementá-lo.
| Abordagem | Modelo | Princípio | Precisão | Velocidade | Cenário de uso ideal |
|---|---|---|---|---|---|
| Abordagem 1: Edição por linguagem natural (Mask-Free) | Nano Banana 2 | Instrução textual + imagem original | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | Edição rápida, substituição de fundo |
| Abordagem 2: Modificação precisa (Mask-Based) | Nano Banana Pro Edit | Máscara + instrução textual + imagem original | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | Controle preciso de área |
| Abordagem 3: Edição iterativa por diálogo | Nano Banana 2 | Diálogo multi-turn + contexto | ⭐⭐⭐⭐ | ⭐⭐⭐ | Edições complexas, otimização gradual |
Diferenças-chave entre o Inpainting do Nano Banana e as soluções tradicionais
Ferramentas tradicionais de inpainting (como o Stable Diffusion Inpainting) exigem que o desenvolvedor desenhe manualmente uma máscara (mask) em preto e branco para especificar a região a ser modificada. A principal inovação do Nano Banana está em:
- Direcionado por compreensão semântica: O modelo entende instruções em linguagem natural como "substitua o fundo por uma praia", identificando automaticamente a região do fundo.
- Consciência contextual: Ao modificar uma parte local, ele automaticamente combina a iluminação, perspectiva e cores do ambiente ao redor.
- Sem necessidade de máscara: A maioria dos cenários de edição não requer a criação manual de uma mask, reduzindo a barreira de entrada para desenvolvedores.
🎯 Recomendação técnica: A capacidade de inpainting do Nano Banana é fornecida através de uma interface padrão compatível com a OpenAI. Recomendamos utilizar a plataforma APIYI (apiyi.com) para fazer as chamadas, pois ela permite gerenciar de forma unificada as invocações dos modelos Nano Banana 2 e Nano Banana Pro, facilitando a alternância e teste entre as diferentes abordagens.
Opção 1: Inpainting com Linguagem Natural sem Máscara (Recomendado para Iniciantes)
Esta é uma das características mais poderosas do Nano Banana inpainting — modificar áreas locais sem necessidade de máscara, apenas usando descrições em texto.
Princípio Central do Nano Banana Mask-Free Inpainting
O Nano Banana 2 (baseado no Gemini 3.1 Flash Image) possui capacidade de segmentação semântica integrada. O modelo irá:
- Analisar o comando de edição — Entender qual parte da imagem você deseja modificar.
- Identificar a região automaticamente — Localizar a área de pixels a ser alterada através da compreensão semântica.
- Raciocinar sobre o contexto — Analisar direção da luz, relações de perspectiva, relações espaciais 3D.
- Substituir com precisão — Modificar a área alvo mantendo a coerência com o ambiente ao redor.
Exemplo de Código Mínimo para Mask-Free Inpainting
import openai
import base64
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1" # Interface unificada da 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"}}
]
}]
)
# Extrair a imagem editada
content = response.choices[0].message.content
print("Edição concluída, extraindo dados da imagem...")
Modelos de Comandos de Edição Comuns para Nano Banana Inpainting
| Tipo de Edição | Modelo de Comando (Inglês) | Descrição em Português |
|---|---|---|
| Remover Objeto | Remove the [object] from the image and fill naturally |
Remove o objeto especificado e preenche naturalmente |
| Substituir Fundo | Replace the background with [new scene] |
Substitui o cenário de fundo |
| Adicionar Elemento | Add a [object] to the [position] of the image |
Adiciona um elemento na posição especificada |
| Modificar Atributo | Change the [object]'s color from [A] to [B] |
Altera a cor de um objeto |
| Desfocar Fundo | Blur the background while keeping the foreground sharp |
Desfoque do fundo (Bokeh) |
| Corrigir Imperfeições | Remove the stain/scratch from the [area] |
Remove manchas ou arranhões |
| Ajustar Pose | Change the person's pose to [description] |
Ajusta a pose de uma pessoa |
| Converter Estilo | Convert the [area] to watercolor painting style |
Conversão de estilo local |

Ver código completo para Mask-Free Inpainting (inclui salvamento de imagem e tratamento de erros)
#!/usr/bin/env python3
"""
Exemplo completo de Nano Banana Mask-Free Inpainting
Edição local de imagens através de instruções em linguagem natural
"""
import openai
import base64
import re
from datetime import datetime
# Configuração
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):
"""
Edita uma imagem usando Mask-Free Inpainting
Args:
image_url: URL da imagem original ou data URI base64
edit_instruction: Instrução de edição em inglês
output_path: Caminho do arquivo de saída (opcional)
Returns:
bool: Sucesso ou falha
"""
print(f"📝 Instrução de edição: {edit_instruction}")
print(f"🖼️ Imagem original: {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
# Extrair dados da imagem em 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"⚠️ Dados da imagem não encontrados, resposta do modelo: {content[:200]}")
return False
# Salvar a imagem
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"✅ Edição concluída! Salvo em: {output_path} ({len(image_bytes):,} bytes)")
return True
except Exception as e:
print(f"❌ Falha na edição: {e}")
return False
# Exemplo de uso
if __name__ == "__main__":
# Exemplo 1: Remover objeto
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"
)
# Exemplo 2: Substituir fundo
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"
)
# Exemplo 3: Modificar atributo local
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"
)
Opção 2: Inpainting Baseado em Máscara (Uso Avançado)
Quando você precisa de controle preciso em nível de pixel sobre a área a ser modificada, pode usar o modo de máscara do Nano Banana Pro Edit.
Como Funciona o Inpainting Baseado em Máscara
Este modo requer que você forneça uma imagem de máscara em preto e branco. As áreas brancas indicam as partes que devem ser modificadas, enquanto as áreas pretas permanecerão inalteradas.
| Parâmetro | Descrição | Requisitos |
|---|---|---|
| Imagem Original | A imagem que precisa ser editada | PNG/JPEG, recomendado não exceder 4096×4096 |
| Imagem de Máscara | Imagem em preto e branco que marca a área de edição | Mesmo tamanho da original, branco = área de edição |
| Instrução de Edição | Descreve como preencher a área branca | Instruções em inglês funcionam melhor |
Exemplo de Código para Inpainting Baseado em Máscara
import openai
client = openai.OpenAI(
api_key="SUA_CHAVE_API",
base_url="https://api.apiyi.com/v1"
)
# Entrada com múltiplas imagens: original + máscara + instrução textual
response = client.chat.completions.create(
model="gemini-2.5-flash-image-preview",
messages=[{
"role": "user",
"content": [
{
"type": "text",
"text": "Gere uma imagem: A primeira imagem é a foto original. A segunda imagem é uma máscara onde as áreas brancas indicam as regiões a serem editadas. Substitua a área mascarada por uma cena de jardim bonita."
},
{"type": "image_url", "image_url": {"url": "https://example.com/original.jpg"}},
{"type": "image_url", "image_url": {"url": "https://example.com/mask.png"}}
]
}]
)
Quando Escolher o Inpainting Baseado em Máscara
- Precisa de controle preciso sobre os limites da edição (ex.: modificar apenas a camisa sem afetar a pele)
- A área de edição tem formato irregular, difícil de descrever com precisão usando linguagem natural
- Precisa processar em lote várias imagens na mesma área
- Cenários profissionais que exigem transições de borda de altíssima qualidade
💡 Dica Prática: A maneira mais simples de criar uma máscara é usar a ferramenta de pincel no Photoshop ou GIMP para pintar de branco as áreas que deseja modificar e então exportar como PNG. Se achar trabalhoso criar máscaras manualmente, o modo Mask-Free da Opção 1 já é suficiente para a maioria dos casos.
Opção 3: Inpainting com Diálogo em Múltiplas Rodadas (Otimização Iterativa)
O Nano Banana 2 suporta edições em múltiplas rodadas em uma única sessão, onde cada rodada pode modificar o resultado da anterior. Essa abordagem é ideal para cenários que exigem ajustes finos.
Fluxo de Diálogo para Inpainting em Múltiplas Rodadas
Rodada 1: "Troque o fundo por um escritório" → Obtém a imagem editada A
Rodada 2: Imagem A + "Substitua a xícara na mesa por um laptop" → Obtém a imagem editada B
Rodada 3: Imagem B + "Ilumine a cena geral, adicione efeito de luz vindo da janela" → Obtém a imagem final C
Implementação de Código para Inpainting em Múltiplas Rodadas
import openai
client = openai.OpenAI(
api_key="SUA_CHAVE_API",
base_url="https://api.apiyi.com/v1"
)
# Construir o diálogo em múltiplas rodadas
messages = [
# Rodada 1: Edição inicial
{
"role": "user",
"content": [
{"type": "text", "text": "Substitua o fundo por uma cena de escritório moderno"},
{"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}}
]
}
]
# Requisição da Rodada 1
response_1 = client.chat.completions.create(
model="gemini-2.5-flash-image-preview",
messages=messages
)
# Adicionar o resultado da Rodada 1 ao contexto
messages.append({"role": "assistant", "content": response_1.choices[0].message.content})
# Rodada 2: Continuar a edição baseada na rodada anterior
messages.append({
"role": "user",
"content": [{"type": "text", "text": "Agora adicione um laptop na mesa e deixe a iluminação mais quente"}]
})
response_2 = client.chat.completions.create(
model="gemini-2.5-flash-image-preview",
messages=messages
)

Comparação entre Diferentes Versões do Modelo Nano Banana Inpainting
A escolha do modelo Nano Banana depende das suas necessidades de inpainting:
| Dimensão de Comparação | Nano Banana 2 | Nano Banana Pro | Explicação |
|---|---|---|---|
| ID do Modelo | gemini-3.1-flash-image-preview |
gemini-3.0-pro-image |
– |
| Edição Sem Máscara (Mask-Free) | ✅ Suportado | ✅ Suportado | Ambos suportam edição por linguagem natural |
| Precisão da Edição | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | O Pro tem compreensão semântica mais refinada |
| Velocidade de Geração | 3-8 segundos | 10-20 segundos | Arquitetura Flash é 3-5 vezes mais rápida |
| Resolução Máxima | 4K (4096px) | 2K (2048px) | Banana 2 tem resolução maior |
| Edição em Múltiplas Rodadas | ✅ Suportado | ✅ Suportado | Ambos suportam conversas em múltiplas rodadas |
| Preço da API | ~$0.02/vez | ~$0.04/vez | Banana 2 tem custo reduzido pela metade |
| Cenário Recomendado | Edição em lote, iteração rápida | Retoque profissional, necessidades de alta precisão | Pode invocar ambos simultaneamente pela plataforma APIYI apiyi.com |
Recomendações para Escolha do Modelo Nano Banana Inpainting
- Edição diária, processamento em lote: Escolha o Nano Banana 2 — velocidade rápida, custo baixo, resolução 4K.
- Retoque profissional, materiais comerciais: Escolha o Nano Banana Pro — compreensão semântica e reprodução de cores mais refinadas.
- Não sabe qual usar: Comece testando com o Nano Banana 2 e mude para o Pro se não ficar satisfeito.
Diferenças entre Nano Banana Inpainting e a Edição na Versão Web do Gemini
Muitos usuários que experimentaram a funcionalidade de edição de imagens na versão web do Gemini (gemini.google.com) perguntam: Essa API também consegue fazer isso?
A resposta é sim, mas com diferenças:
| Dimensão | Versão Web do Gemini | API Nano Banana |
|---|---|---|
| Modo de Interação | Seleção com mouse + descrição textual | Chamada de API pura (texto + imagem) |
| Criação de Máscara | Ferramenta de pincel integrada na web | É necessário preparar a imagem da máscara ou usar o modo mask-free |
| Precisão de Controle | Seleção visualizada, intuitiva | Controle em nível de código, pode ser automatizado |
| Processamento em Lote | Não suportado | ✅ Suporta chamadas em lote |
| Marca d'água | Possui marca d'água SynthID | Possui marca d'água SynthID |
| Capacidade de Integração | Apenas uso na web | Pode ser incorporado em qualquer aplicação |
| Preço | Gratuito (com limites) | Cobrança por uso |
Diferença-chave: A experiência de edição de imagens na versão web do Gemini é mais interativa e visual, permitindo que o usuário desenhe a área de seleção diretamente com o mouse. A vantagem central da versão API está na automação e escalabilidade — você pode processar imagens em lote no código e integrar ao fluxo do seu produto.
🎯 Recomendação Técnica: Se a sua necessidade é integrar a funcionalidade de edição de imagens por IA no seu próprio produto, a API é a única opção. Através da plataforma APIYI apiyi.com, você pode obter acesso a uma interface mais estável e suporte técnico.
Técnicas de Otimização de Comandos de Edição
Um bom comando de edição pode melhorar significativamente os resultados do inpainting:
| Técnica | Comando Ruim ❌ | Comando Bom ✅ |
|---|---|---|
| Descrição Específica | "Muda o fundo" | "Substitua o fundo por uma praia ao pôr do sol, com luz dourada e quente" |
| Especificar Área a Ser Preservada | "Troca o fundo" | "Substitua o fundo mantendo a pessoa completamente inalterada" |
| Especificar Iluminação | "Adiciona uma luz" | "Adicione uma iluminação suave e quente vinda do canto superior esquerdo, projetando sombras suaves" |
| Descrever Material | "Troca o chão" | "Substitua o piso por um piso de madeira de carvalho claro com veios visíveis" |
| Limitar o Escopo | "Muda a cor" | "Altere apenas a cor da carroceria do carro para azul meia-noite, mantenha os vidros e pneus inalterados" |
Recomendações de Otimização de Desempenho para Nano Banana Inpainting
- Pré-processamento da Imagem de Entrada — Recomenda-se entre 1024×1024 e 2048×2048; tamanhos maiores aumentam o tempo de processamento.
- Priorize Comandos em Inglês — A precisão de compreensão de comandos em inglês é significativamente maior do que em chinês.
- Foque em uma Modificação por Vez — Divida edições complexas em múltiplas etapas, fazendo apenas uma coisa por vez.
- Adicione o Prefixo "Generate an image:" — Indique claramente ao modelo para gerar uma imagem, não apenas uma resposta em texto.
Perguntas Frequentes
Q1: A API do Nano Banana realmente suporta inpainting? Não é só na versão web?
Sim, a API do Nano Banana suporta totalmente o inpainting (edição local de imagens). Tanto o Nano Banana 2 (gemini-3.1-flash-image-preview) quanto o Nano Banana Pro (gemini-3.0-pro-image) suportam a edição de imagens via API. A característica mais poderosa é o mask-free inpainting (inpainting sem máscara), onde você não precisa criar uma máscara, basta descrever a necessidade de edição em linguagem natural e o modelo identifica e modifica automaticamente a área alvo. Você pode obter rapidamente uma chave API para começar a testar através da plataforma APIYI apiyi.com.
Q2: Qual é melhor, Mask-Free ou Mask-Based Inpainting?
Depende do cenário. Para necessidades comuns como substituição de fundo, remoção de objetos, alteração de cores, o modo Mask-Free já é suficientemente preciso e muito mais conveniente. Para cenários que exigem controle extremamente rigoroso de bordas (por exemplo, modificar apenas o padrão de uma camisa sem afetar a pele), o modo Mask-Based oferece um controle mais preciso. Recomenda-se testar primeiro com o modo Mask-Free e, se não ficar satisfeito, usar a máscara. A plataforma APIYI apiyi.com suporta a invocação de ambos os modos, sendo muito fácil alternar entre eles.
Q3: O inpainting do Nano Banana pode alcançar o efeito do Photoshop?
Em muitos cenários, já está muito próximo ou até supera o preenchimento baseado em conteúdo (Content-Aware Fill) do Photoshop. A vantagem do Nano Banana está em sua compreensão semântica da cena — por exemplo, ao remover uma pessoa, ele entende como deveria ser o prédio ou a paisagem por trás, e não apenas faz um preenchimento simples de textura. No entanto, para retoques comerciais extremamente refinados, recomenda-se usar o Photoshop para ajustes finais.
Q4: Por que meu comando de edição às vezes não funciona e o modelo gera uma imagem completamente nova?
Este é um problema comum. Certifique-se de que seu comando expresse claramente "editar" e não "gerar". Recomenda-se adicionar o prefixo "Generate an image:" ao comando e especificar claramente quais partes da imagem original devem ser mantidas. Por exemplo: "Generate an image: Edite a foto original - substitua apenas o céu por uma noite estrelada, mantenha todo o resto exatamente igual". Se o problema persistir, tente adicionar "Do not change the composition or layout" para restringir o modelo.
Q5: Qual é o custo da invocação da API de Inpainting do Nano Banana?
A edição de imagem com Nano Banana 2 custa aproximadamente $0,02 por chamada, e com Nano Banana Pro, aproximadamente $0,04 por chamada. Ao usar a plataforma APIYI apiyi.com para fazer as chamadas, você pode obter preços mais vantajosos, com um custo real de cerca de ¥0,14 por chamada (Nano Banana 2), o que é adequado para cenários de edição de imagens em lote.
Resumo
A capacidade de inpainting (edição local) do Nano Banana é muito mais poderosa do que muitos desenvolvedores imaginam. As 3 abordagens têm cenários de aplicação distintos:
- Edição por linguagem natural sem máscara — Mais conveniente, adequada para a maioria dos cenários, recomendada como primeira opção
- Modificação precisa com máscara — Mais precisa, ideal para controle de pixels em nível profissional
- Edição iterativa em diálogos múltiplos — Mais flexível, perfeita para modificações complexas e progressivas
Independentemente da abordagem escolhida, o núcleo do processo é enviar a imagem e o comando de edição através da API padrão de Chat Completions. Recomendamos usar a plataforma APIYI (apiyi.com) para começar os testes rapidamente — você pode executar seu primeiro exemplo de inpainting em apenas 5 minutos.
Referências
-
Documentação oficial do Google AI – Geração de Imagens com Nano Banana
- Link:
ai.google.dev/gemini-api/docs/image-generation - Descrição: Documentação completa da API de geração e edição de imagens do Gemini
- Link:
-
Blog do Google Developers – Gemini 2.5 Flash Image
- Link:
developers.googleblog.com/introducing-gemini-2-5-flash-image/ - Descrição: Explicação detalhada da arquitetura técnica e capacidades do Nano Banana
- Link:
-
DataCamp – Guia Completo do Gemini 2.5 Flash Image
- Link:
datacamp.com/tutorial/gemini-2-5-flash-image-guide - Descrição: Guia prático com exemplos de código completos
- Link:
📝 Autor: Equipe APIYI | Para trocas técnicas e acesso à API, visite apiyi.com
