GPT Image 2.6: como marcar um objeto, editar e conferir o resultado

Prepare uma marcação transparente, faça uma edição pela API da Ofox e confira o que mudou. Com dois resultados reais, arquivos de exemplo e scripts de validação.

Um remendo laranja dentro de um bastidor representa uma alteração localizada em uma imagem maior

Para orientar uma edição com GPT Image 2.6 usando um círculo, envie a imagem original e uma marcação em PNG transparente separada ao endpoint de edição de imagens, pelo campo markup. Descreva a alteração no prompt. Alinhe a marcação ao original e examine a imagem inteira depois: acertar o objeto não significa preservar todos os pixels fora da área marcada.

Testamos esse processo pela Ofox em 6 de novembro de 2026. Duas requisições usaram a mesma ilustração de três canecas e o mesmo prompt. Ao mover apenas a elipse vermelha da caneca esquerda para a direita, mudou também a caneca que ficou laranja. Porém, ambas as saídas alteraram pixels fora do alvo. Este tutorial inclui os arquivos originais, as saídas reais, os parâmetros e verificações locais para você avaliar essa diferença.

Baixe o exemplo antes de fazer uma chamada paga

Baixe o pacote completo de edição com marcação. Ele contém o original em PNG e SVG, duas camadas de marcação transparentes, dois PNGs gerados, o prompt, os metadados das requisições e três scripts auxiliares em Python. Baixar e inspecionar esses arquivos localmente não chama a API.

O original é uma ilustração que criamos para este teste, não uma foto de produto de um cliente. Há três canecas de viagem verde-azuladas, identificadas por A, B e C, todas com o texto A-17. O título, o fundo, o traço inferior e o ponto laranja oferecem outras áreas de conferência. Essas características simples facilitam perceber a escolha do objeto errado ou mudanças no texto. Não demonstram desempenho com rostos, joias, fotografias reais de produtos ou grandes lotes.

Use Python 3 e Pillow para as verificações locais. No terminal, entre na pasta extraída e crie um ambiente separado:

python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install Pillow

Os exemplos usam a sintaxe de shell do macOS ou Linux. No Windows, ative o ambiente virtual com o comando adequado ao seu terminal. O arquivo decode_edit.py usa somente a biblioteca padrão do Python.

Escolha entre marcação, máscara e composição exata

O markup ajuda quando é mais fácil apontar do que descrever: alterar uma entre várias canecas semelhantes, remover um objeto indicado por uma seta ou revisar um detalhe de uma composição cheia de elementos. A marcação comunica a intenção de edição; ela não faz parte da arte final.

NecessidadePonto de partidaO que verificar
Identificar um entre vários objetos semelhantesCamada de marcação separada e prompt específicoAlvo correto, marcação removida e demais objetos aceitáveis
Orientar uma edição regional com transparênciaFluxo com máscaraInterpretação da máscara e alterações ao redor
Preservar exatamente um logo aprovado ou o fundoGuardar o original e compor a alteração aprovada em um editor de imagensLimites das camadas, alinhamento e pixels protegidos idênticos

A última linha é uma recomendação de fluxo, não uma função testada nestas duas chamadas. Se pixels inalterados forem um requisito de entrega, não aprove uma imagem gerada só porque ela parece semelhante. O guia de máscaras e preservação de produtos (em inglês) aborda esse problema separadamente.

Segundo o guia de geração de imagens da OpenAI, o endpoint Images de edição aceita markup no Image 2.5 e no 2.6; não é uma função exclusiva do 2.6. A marcação se aplica à primeira imagem de entrada e não pode ser combinada com mask ou prompt_rewriter. O PNG transparente deve ter as mesmas dimensões do original após a correção de orientação. Os limites documentados são 16.777.216 pixels para cada imagem e 50 MB para o arquivo de marcação. Aqui usamos uma entrada de 1024 × 1024 e uma marcação bem menor que esse limite.

Exporte a marcação como um arquivo transparente separado

No exemplo fornecido, use source.png como imagem e markup-left.png como marcação. A versão para o lado direito é markup-right.png. Os SVGs são arquivos-fonte editáveis, não os arquivos enviados à API.

Para preparar sua própria marcação em um editor com camadas:

  1. Abra o original e defina primeiro a orientação. Se o editor aplicar a rotação EXIF, exporte uma cópia de trabalho corretamente orientada antes de desenhar.
  2. Adicione uma camada transparente sobre a imagem sem alterar as dimensões da tela.
  3. Desenhe um círculo claro ao redor de um único alvo. Sempre que possível, deixe objetos sem relação fora dele e evite cobrir textos importantes com um traço grosso.
  4. Oculte o original e exporte somente a camada de marcação como PNG, mantendo a tela inteira, sem recortar apenas ao redor do desenho.
  5. Abra novamente o original e a marcação sobrepostos para conferir o alinhamento. Guarde o original separado; não o substitua por uma versão achatada com o círculo incorporado.

Um padrão quadriculado desenhado na imagem não é transparência. Um PNG com fundo branco e círculo vermelho também não é. O arquivo precisa de um canal alfa com pixels de fundo realmente transparentes. Uma prévia que parece transparente não comprova isso.

Execute a verificação local incluída:

python3 preflight.py source.png markup-left.png

Nosso arquivo retorna passed: true, tamanho [1024, 1024] e intervalo alfa [0, 255]. O script rejeita uma camada opaca, uma camada vazia totalmente transparente, dimensões diferentes e JPEG. Testamos localmente esses quatro casos negativos. Passar na verificação confirma propriedades básicas do arquivo, não acesso ao modelo, posicionamento correto do círculo ou sucesso da edição.

Peça uma alteração e liste os detalhes que devem permanecer

Este é o prompt exato das duas requisições, também disponível em prompt.txt:

Change only the body of the travel mug inside the red ellipse to warm orange. Keep its dark lid, handle geometry, cream A-17 label and label text unchanged. Keep the other two mugs, their colors, the A B C headings, FIELD / 03 title, background, bottom line and small orange dot unchanged. The red ellipse is an editing annotation: do not draw it in the final image. Keep the original framing and flat illustration style.

O prompt não diz “esquerda” nem “direita”: a posição é transmitida pela marcação. Ele separa o corpo da caneca da tampa, da geometria da alça e da etiqueta, e pede explicitamente que o círculo não apareça na imagem final. Também solicita manter as outras canecas e suas cores, A/B/C, o título FIELD / 03, o fundo, o traço, o ponto e o enquadramento e estilo de ilustração plana.

Para sua própria imagem, substitua o objeto, a alteração e os detalhes protegidos. Comece com uma revisão, em vez de misturar recoloração, iluminação, reposicionamento e troca de fundo. Assim fica mais fácil diagnosticar o resultado. Uma instrução de preservação é um requisito a conferir, não uma prova de que ele foi cumprido.

O guia de prompts para imagens explica edições específicas e controles por modelo. Usamos quality=medium e complexity=low para esta tarefa pequena, sem input_fidelity. Esses parâmetros descrevem nosso teste; não são uma configuração ideal universal.

Envie a requisição pela Ofox

O endpoint testado foi https://api.ofox.io/v1/images/edits, com o ID de modelo da Ofox openai/gpt-image-2.6-flare. O identificador no acesso direto ao fornecedor pode ser diferente do usado por um gateway. Antes de trocar o nome, confira a documentação da Images API da Ofox e os modelos disponíveis na sua conta.

A chamada abaixo usa os arquivos fornecidos e consome créditos da conta. Configure OFOX_API_KEY com segurança no ambiente local; não coloque a chave no artigo, nos arquivos distribuídos ou em um notebook compartilhado.

curl --fail-with-body --silent --show-error \
  https://api.ofox.io/v1/images/edits \
  -H "Authorization: Bearer ${OFOX_API_KEY:?Set OFOX_API_KEY first}" \
  -F 'model=openai/gpt-image-2.6-flare' \
  -F 'image=@source.png;type=image/png' \
  -F 'markup=@markup-left.png;type=image/png' \
  -F 'prompt=<prompt.txt' \
  -F 'size=1024x1024' \
  -F 'quality=medium' \
  -F 'complexity=low' \
  -F 'n=1' \
  -F 'output_format=png' \
  -o response.json

Deixe o curl definir o Content-Type multipart e o boundary. Não acrescente manualmente um cabeçalho Content-Type: multipart/form-data sem boundary. Na sintaxe de formulário do curl, prompt=<prompt.txt lê o conteúdo do arquivo para o campo de prompt; não envia o nome do arquivo como texto da instrução.

Se o curl terminar com sucesso, decodifique e inspecione a resposta:

python3 decode_edit.py response.json my-left-result.png
python3 inspect_edit.py source.png my-left-result.png

O decodificador procura respostas de erro, verifica a assinatura PNG e se recusa a sobrescrever um arquivo existente. O script de inspeção pressupõe o exemplo de 1024 × 1024 e coordenadas fixas de recorte. Para suas fotos, troque essas coordenadas por áreas protegidas relevantes, em vez de reutilizar os recortes das canecas sem adaptação.

Para repetir o teste com o alvo à direita, troque apenas markup-left.png por markup-right.png, mantenha source.png e use novos nomes para a resposta e a saída. Cada chamada é cobrada. Não use o resultado da esquerda como entrada da direita: isso também mudaria a imagem inicial e deixaria de reproduzir esta comparação.

O que mostram os dois resultados reais

Relatório local no navegador com original, edição à esquerda, edição à direita e diferenças de pixels fora do alvo

Captura real de navegador do nosso relatório local em inglês, com saídas e medições da API. Não é a interface do Ofox Chat. A capa decorativa do artigo é uma ilustração conceitual separada.

ObservaçãoMarcação à esquerdaMarcação à direita
Mudança visível no alvoCorpo da caneca A ficou laranjaCorpo da caneca C ficou laranja
Resposta HTTP200200
SaídaPNG de 1024 × 1024PNG de 1024 × 1024
Tempo observado no cliente, incluindo rede11,566 segundos10,229 segundos
Tokens de entrada / saída retornados1.286 / 1.4491.265 / 1.449
Marcação vermelha aparece na imagem finalNãoNão

Foi uma chamada por alvo, sem novas tentativas. Esses tempos são observações, não um benchmark de velocidade nem uma promessa de latência. A contagem de tokens de entrada variou apesar do mesmo prompt; o teste não explica o motivo. Não testamos Sunburst nem comparamos fornecedores.

As etiquetas continuam legíveis, e a caneca pretendida muda de cor nas duas saídas. Porém, as imagens geradas acrescentam textura e sombreamento sutis. As outras canecas continuam parecendo verde-azuladas, mas seus valores RGB não são idênticos aos do original. Abra o original, o resultado à esquerda e o resultado à direita em resolução total, em vez de julgar apenas a captura reduzida.

O script local compara recortes nas mesmas coordenadas, sem redimensionamento. Ele calcula a média das diferenças absolutas entre os canais RGB, cujos valores vão de 0 a 255:

RecorteResultado à esquerdaResultado à direita
Corpo da caneca central, que não foi alvo de nenhuma requisição11,86610,925
Área do título3,1413,890
Traço inferior1,8531,527

Esses valores são diferenças de pixels, não notas de qualidade nem limites universais de aprovação. Os cinco recortes inspecionados, incluindo os corpos-alvo registrados no pacote, diferem do original. Portanto, essas saídas não são cópias exatas fora do objeto marcado. A medição não cobre todos os pixels protegidos nem determina, por si só, se uma mudança é inaceitável para o seu uso.

Aprove o resultado conforme o que precisa entregar

Antes de entregar a edição, confira três aspectos separadamente:

  • Seleção: o objeto desejado mudou, o vizinho não recebeu a mesma recoloração laranja e a marcação desapareceu.
  • Conteúdo: etiquetas, números, marcas e geometria solicitada continuam corretos. Neste exemplo, leia cada A-17, não apenas as letras grandes A/B/C.
  • Preservação: pequenas mudanças de textura ou cor são aceitáveis? Se precisar de identidade exata, compare pixels nas regiões protegidas e guarde as camadas originais para composição.

Mantenha juntos original, marcação, prompt, ID do modelo, parâmetros, saída e notas de aprovação. Em uma revisão, altere uma causa de cada vez. Um círculo mal posicionado exige uma nova marcação; alvo correto com mudança excessiva de estilo pede uma instrução de preservação mais clara ou outro fluxo de edição. Gerar repetidamente sem identificar o problema torna a comparação menos útil.

Experimente a tarefa de imagem no Ofox Chat

Se preferir conversar, abra o Ofox Chat com a imagem original e um pedido específico: qual objeto deve mudar, como deve mudar e quais detalhes devem ficar. Examine a saída com os mesmos critérios de seleção, texto e preservação.

O Image 2.6 está disponível no Ofox Chat, mas os dois testes deste artigo usaram a API. Não verificamos um controle no Chat que encaminhe uma camada transparente separada como o campo markup. Enviar uma referência marcada em uma conversa não prova que os mesmos campos ou parâmetros sejam usados. Para reproduzir exatamente esta requisição com dois arquivos, siga as etapas de API acima.

Separe problemas de arquivo, requisição e resultado

SintomaPrimeira verificaçãoPróxima ação
Marcação rejeitada ou dimensões diferentesOrientação e tamanho da telaNormalize a orientação, exporte ambos no mesmo tamanho e rode a verificação
Retângulo branco cobre a imagemCanal alfa da marcaçãoOculte original e fundo, exportando apenas a camada transparente de desenho
Marcação vazia passa despercebida na préviaAlfa e presença de traço visívelAbra sobre fundo contrastante; o script rejeita arquivo totalmente transparente
Objeto errado é alteradoAlinhamento e círculo ambíguoSobreponha as camadas, isole um alvo e preserve a entrada original
Círculo vermelho aparece na saídaImagem achatada ou instrução pouco claraEnvie o original separado e peça para não desenhar a marcação
Erro após copiar exemplo com máscaraCampos conflitantesRemova mask e prompt_rewriter da requisição com markup
Modelo não encontrado ou acesso negadoID exato e corpo da respostaConfira disponibilidade e credenciais, sem tentar nomes aleatórios
Resposta de sucesso sem PNG utilizávelErro no JSON ou dados de imagem ausentesInspecione o JSON antes de decodificar e guarde-o para diagnóstico
Outros objetos ou etiquetas mudamComparação em resolução totalRejeite alterações inaceitáveis; ajuste uma instrução ou componha com camadas originais protegidas
Timeout ou limite de requisiçõesResposta e limites da contaConfira se a tarefa terminou antes de repetir; novas chamadas podem gerar custos

Para problemas de formato de saída, consulte o tutorial de GIF com Image 2.6 e o fluxo de SVG (em inglês). São entregas diferentes, com requisitos próprios de endpoint e inspeção. Para acesso ao modelo e contexto de cobrança, veja a visão geral da API Image 2.6 (em inglês). Os tokens observados acima não representam um preço fixo por edição.