|

Dominando 3 Esquemas de Implementação e Código Completo para a API de Inpainting Local do Nano Banana

nano-banana-inpainting-api-image-editing-guide-pt-pt 图示

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á:

  1. Analisar o comando de edição — Entender qual parte da imagem você deseja modificar.
  2. Identificar a região automaticamente — Localizar a área de pixels a ser alterada através da compreensão semântica.
  3. Raciocinar sobre o contexto — Analisar direção da luz, relações de perspectiva, relações espaciais 3D.
  4. 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

nano-banana-inpainting-api-image-editing-guide-pt-pt 图示

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
)

nano-banana-inpainting-api-image-editing-guide-pt-pt 图示


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

  1. Pré-processamento da Imagem de Entrada — Recomenda-se entre 1024×1024 e 2048×2048; tamanhos maiores aumentam o tempo de processamento.
  2. Priorize Comandos em Inglês — A precisão de compreensão de comandos em inglês é significativamente maior do que em chinês.
  3. Foque em uma Modificação por Vez — Divida edições complexas em múltiplas etapas, fazendo apenas uma coisa por vez.
  4. 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

  1. 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
  2. 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
  3. 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

📝 Autor: Equipe APIYI | Para trocas técnicas e acesso à API, visite apiyi.com

Similar Posts