title: "Desvendando o Nano Banana 2 API: Formatos de Imagem e Otimização de 4K"
description: "Entenda por que o Nano Banana 2 API retorna imagens com formato inconsistente e descubra o motivo técnico por trás da redução de 30MB para 8MB em imagens 4K."
Nota do autor: Detalhamento sobre como o Nano Banana 2 API gera imagens em formato PNG em vez de JPEG, análise técnica da redução de volume de 30MB para 8MB em imagens 4K no AI Studio, e as diferenças de controle de formato entre Vertex AI e AI Studio.
Muitos desenvolvedores que utilizam o Nano Banana 2 API para geração de imagens se deparam com esta dúvida: A API retorna dados em base64, mas o arquivo resultante é PNG ou JPEG? O que é ainda mais intrigante é que, na mesma resolução 4K, o volume das imagens geradas pelo AI Studio caiu drasticamente de mais de 30MB para cerca de 8MB. Este artigo analisa os mecanismos subjacentes da API para esclarecer a verdade sobre o controle de formato e a variação de volume.
Valor central: Ao terminar de ler este artigo, você dominará a forma correta de obter saídas em formato PNG pelo Nano Banana 2 API e entenderá a causa fundamental da redução no volume das imagens 4K.

Pontos principais sobre o formato de saída de imagem do Nano Banana 2 API
Primeiro, vamos esclarecer um fato crucial: os dados de imagem retornados pelo Nano Banana 2 API são codificados em base64, mas o base64 é apenas uma codificação de transporte; o que realmente determina o formato da imagem são os dados de bytes subjacentes.
| Ponto | Descrição | Impacto |
|---|---|---|
| Formato de retorno padrão | Codificado em base64, declarado como image/png, mas os bytes reais podem ser JPEG |
Salvar diretamente pode resultar em formato incorreto |
| Controle de formato no AI Studio | Não suporta o parâmetro outputMimeType |
Deve ser convertido no cliente |
| Controle de formato no Vertex AI | Suporta imageOutputOptions para especificar PNG/JPEG |
Controlável no servidor |
| Mudança de volume 4K | Reduzido de ~30MB para ~8MB | Causado por ajustes de poder computacional no servidor |
| Bug conhecido | A API afirma retornar PNG, mas pode retornar bytes JPEG | Necessário detectar magic bytes |
Mecanismos subjacentes da saída de imagem do Nano Banana 2 API
O Nano Banana 2 (ID do modelo: gemini-3.1-flash-image-preview) retorna a saída de imagem através do objeto inlineData, com a seguinte estrutura:
{
"candidates": [{
"content": {
"parts": [{
"inlineData": {
"mime_type": "image/png",
"data": "<BASE64_IMAGE_DATA>"
}
}]
}
}]
}
Existe um bug confirmado oficialmente pelo Google (GitHub Issue #1824): o campo mime_type na resposta é declarado como image/png, mas os dados de bytes decodificados podem, na verdade, estar no formato JPEG. Isso significa que você não pode confiar apenas no tipo MIME retornado pela API; é necessário determinar o formato real através dos magic bytes do cabeçalho do arquivo.
O método de verificação é simples: o cabeçalho do arquivo JPEG é \xff\xd8, e o cabeçalho do PNG é \x89PNG\r\n\x1a\n.

3 métodos para obter imagens em formato PNG da API Nano Banana 2
Este é o ponto central deste artigo: como garantir que você receba imagens realmente no formato PNG.
Método 1: Conversão via cliente Python (Recomendado para AI Studio)
Como a Gemini API do AI Studio não oferece suporte ao controle de formato no lado do servidor, a maneira mais confiável é realizar a conversão no lado do cliente:
import base64
from PIL import Image
from io import BytesIO
# Invocar o Nano Banana 2 para gerar a imagem
from google import genai
from google.genai import types
client = genai.Client(api_key="YOUR_API_KEY")
response = client.models.generate_content(
model="gemini-3.1-flash-image-preview",
contents=["Um gato laranja cochilando sob o sol"],
config=types.GenerateContentConfig(
response_modalities=["TEXT", "IMAGE"],
image_config=types.ImageConfig(
image_size="4K",
aspect_ratio="1:1"
),
)
)
# Salvar no formato PNG (independentemente do formato retornado pela API)
for part in response.parts:
if image := part.as_image():
image.save("output.png", format="PNG") # Força o salvamento sem perdas em PNG
O ponto crucial aqui é especificar explicitamente format="PNG" dentro de image.save("output.png", format="PNG"). Se você não definir o parâmetro format, o Pillow tentará inferir o formato com base na extensão do arquivo — o que funciona na maioria das vezes, mas declarar explicitamente é muito mais seguro.
Ver código completo para detecção manual de formato e conversão
import base64
from PIL import Image
from io import BytesIO
def detect_and_save(base64_data: str, output_path: str, target_format: str = "PNG"):
"""
Detecta o formato real da imagem base64 e converte para salvamento
Args:
base64_data: dados da imagem codificados em base64
output_path: caminho do arquivo de saída
target_format: formato alvo (PNG/JPEG/WEBP)
"""
image_bytes = base64.b64decode(base64_data)
# Detecta o formato real através dos magic bytes
if image_bytes[:2] == b'\xff\xd8':
actual_format = "JPEG"
elif image_bytes[:8] == b'\x89PNG\r\n\x1a\n':
actual_format = "PNG"
elif image_bytes[:4] == b'RIFF':
actual_format = "WEBP"
else:
actual_format = "Desconhecido"
print(f"Formato real retornado pela API: {actual_format}")
print(f"Tamanho dos dados originais: {len(image_bytes) / 1024 / 1024:.2f} MB")
# Abre com Pillow e converte para o formato alvo
img = Image.open(BytesIO(image_bytes))
print(f"Dimensões da imagem: {img.size[0]}x{img.size[1]}")
if target_format == "PNG":
img.save(output_path, format="PNG", optimize=True)
elif target_format == "JPEG":
img.save(output_path, format="JPEG", quality=95)
elif target_format == "WEBP":
img.save(output_path, format="WEBP", quality=90)
import os
saved_size = os.path.getsize(output_path) / 1024 / 1024
print(f"Tamanho do arquivo após salvar: {saved_size:.2f} MB ({target_format})")
Método 2: Controle de formato no servidor via Vertex AI
Se você utiliza o Vertex AI para invocar o Nano Banana 2, pode especificar o formato de saída diretamente na requisição. Esta é a única forma que suporta controle de formato no lado do servidor:
import os
from google import genai
from google.genai import types
from google.genai.types import HttpOptions
os.environ["GOOGLE_CLOUD_PROJECT"] = "your-project-id"
os.environ["GOOGLE_CLOUD_LOCATION"] = "global"
os.environ["GOOGLE_GENAI_USE_VERTEXAI"] = "True"
client = genai.Client(http_options=HttpOptions(api_version="v1"))
response = client.models.generate_content(
model="gemini-3.1-flash-image-preview",
contents=["Um gato laranja cochilando sob o sol"],
config=types.GenerateContentConfig(
response_modalities=["TEXT", "IMAGE"],
image_config=types.ImageConfig(
image_size="4K",
aspect_ratio="1:1",
output_mime_type="image/png", # Especifica a saída PNG
# compression_quality=75, # Válido apenas para JPEG, 0-100
),
)
)
Método 3: Processamento unificado via serviço proxy de API da APIYI
Ao realizar a invocação através do serviço proxy de API da APIYI, a plataforma lida automaticamente com problemas de compatibilidade de formato:
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://vip.apiyi.com/v1"
)
response = client.chat.completions.create(
model="gemini-3.1-flash-image-preview",
messages=[
{"role": "user", "content": "Um gato laranja cochilando sob o sol"}
]
)
🎯 Sugestão de escolha de formato: Escolha PNG para qualidade sem perdas e JPEG para tamanhos menores (quality=95 é quase sem perdas).
Recomendamos realizar testes através da plataforma APIYI apiyi.com, pois ela unifica o tratamento da compatibilidade de formatos, evitando o trabalho manual de decodificação base64 e detecção de formato.
Comparação da capacidade de controle de formato da API Nano Banana 2
Este é um ponto onde muitos desenvolvedores se confundem: as capacidades de controle de formato entre o AI Studio e o Vertex AI são completamente diferentes.
Comparação de suporte a parâmetros de formato da API Nano Banana 2
| Parâmetro | AI Studio (Gemini API) | Vertex AI | Imagen API |
|---|---|---|---|
| outputMimeType | Não suportado | Suportado (image/png, image/jpeg) | Suportado |
| compressionQuality | Não suportado | Suportado (0-100, apenas JPEG) | Suportado |
| imageSize | Suportado (512/1K/2K/4K) | Suportado | Suportado |
| aspectRatio | Suportado | Suportado | Suportado |
Isso significa que: se você invocar o Nano Banana 2 usando o AI Studio, não conseguirá controlar no servidor se a saída será PNG ou JPEG. O formato retornado pela API depende do comportamento padrão do servidor do Google — e esse comportamento padrão atualmente possui um bug (afirma ser PNG, mas na verdade pode ser JPEG).
Comparação de tamanho entre diferentes formatos da API Nano Banana 2
Para a mesma imagem 4K (4096×4096) gerada por IA, a diferença de tamanho entre os formatos é enorme:
| Formato | Método de compressão | Tamanho típico 4K | Suporta transparência | Perda de qualidade |
|---|---|---|---|---|
| PNG | Compressão sem perdas | 15-30 MB | Sim | Nenhuma |
| JPEG quality=95 | Compressão com perdas | 3-8 MB | Não | Perda mínima |
| JPEG quality=75 | Compressão com perdas | 1-3 MB | Não | Perda leve |
| WebP quality=90 | Compressão com perdas | 2-5 MB | Sim | Perda mínima |
O PNG é um formato sem perdas, e o tamanho do arquivo reflete diretamente a complexidade das informações da imagem (valor de entropia). Quanto mais ricos os detalhes e mais complexas as texturas, maior será o arquivo PNG. Esta é a base fundamental para entender a mudança no tamanho das imagens 4K na próxima seção.
Dica: Se o seu cenário de aplicação não exige canal de transparência, o JPEG quality=95 é visualmente quase indistinguível do PNG, mas o tamanho é apenas 1/4 a 1/3 do PNG. Através da APIYI apiyi.com, você pode comparar rapidamente a diferença de efeito entre os dois formatos em cenários reais.

A verdade sobre a redução do tamanho das imagens 4K da API Nano Banana 2
Esta é a dúvida que mais preocupa os usuários: por que, mantendo a mesma resolução 4K, as imagens geradas pelo Nano Banana 2 no AI Studio caíram de mais de 30 MB para cerca de 8 MB?
A mudança no tamanho das imagens da API Nano Banana 2 não é um problema de formato
Primeiro, vamos eliminar um equívoco comum: a redução não aconteceu porque o formato mudou de PNG para JPEG. Se você verificar os magic bytes, notará que o formato dos dados retornados permanece o mesmo.
O verdadeiro motivo é que o Google ajustou os parâmetros de computação do modelo no servidor, o que reduziu a complexidade da informação (valor de entropia) da imagem gerada. Existem três mecanismos específicos:
Motivo 1: Redução nas etapas de inferência (principal motivo)
Ao gerar imagens, os modelos de difusão passam por várias rodadas de iteração de remoção de ruído (denoising). O número de etapas de remoção de ruído determina diretamente o nível de detalhamento da imagem:
- Antes: Provavelmente usava de 50 a 100 etapas, gerando imagens com texturas ricas e detalhes refinados.
- Agora: Pode ter sido reduzido para 20 a 40 etapas, resultando em uma imagem clara, mas com perda de detalhes locais e complexidade de textura.
Menos etapas de remoção de ruído → menos detalhes de textura → menor entropia de informação → tamanho menor após a compressão sem perdas do PNG.
Isso não é apenas uma "queda na qualidade da imagem" — a olho nu, a composição geral e as cores podem parecer semelhantes, mas, ao ampliar no nível de pixel, você notará que as microtexturas e os gradientes de cor não são tão delicados quanto antes.
Motivo 2: Otimização de pré-processamento no servidor
Após a geração e antes da codificação em PNG, o Google pode ter adicionado um leve processamento de redução de ruído e simplificação de cores:
- A supressão sutil de ruído reduz detalhes de alta frequência.
- A redução nos níveis de gradiente de cor diminui a precisão das transições de cores.
- Esses processamentos tornam a compressão PNG mais eficiente (mais pixels semelhantes, maior taxa de compressão).
Motivo 3: Ajuste na precisão de ponto flutuante
A inferência do modelo pode ter mudado de FP32 (ponto flutuante de 32 bits) para FP16 (ponto flutuante de 16 bits):
- A precisão de cálculo do FP16 é metade da do FP32, e o uso da GPU também é drasticamente reduzido.
- A redução na precisão faz com que os gradientes de cor não sejam tão suaves quanto antes, o que acaba se refletindo na redução do tamanho do arquivo PNG.
Linha do tempo da mudança no tamanho das imagens da API Nano Banana 2
| Data | Evento | Impacto |
|---|---|---|
| Nov/2025 | Lançamento do Nano Banana Pro, potência total | PNG 4K aprox. 25-35 MB |
| Dez/2025 | Cota gratuita reduzida de 3 para 2 imagens/dia | Início da limitação de recursos |
| Jan/2026 | Feedback dos usuários sobre queda na qualidade | Menos detalhes, mas mesma resolução |
| Fev/2026 | Lançamento do Nano Banana 2 | PNG 4K aprox. 6-10 MB |
| Meados de 2026 (previsto) | Capacidade de produção do Google TPU v7 atingida | Possível retorno à potência total |
Conclusão principal: Este é um compromisso que o Google fez para equilibrar o volume de usuários e a qualidade do serviço durante o período de escassez de capacidade de TPU. A resolução (número de pixels) permanece a mesma, mas a densidade de informação (a quantidade de informação única que cada pixel carrega) diminuiu. Os usuários não conseguem restaurar a qualidade anterior de 30 MB através dos parâmetros da API.
🎯 Sugestões de ação: Se você precisa de uma qualidade de detalhes extremamente alta, tente: 1) Usar o parâmetro
compressionQuality=100do Vertex AI; 2) Enfatizar requisitos de detalhes e texturas no seu comando; 3) Gerar em 2K e usar um modelo de super-resolução para ampliar para 4K.
Através da APIYI (apiyi.com), você pode testar simultaneamente os efeitos de diferentes combinações de parâmetros para encontrar o melhor equilíbrio entre qualidade e tamanho.
Perguntas frequentes
Q1: Salvar dados base64 diretamente como um arquivo .png significa que ele está no formato PNG?
Não necessariamente. A extensão do arquivo não determina o formato real. Você precisa primeiro decodificar usando base64.b64decode(), abrir com o Image.open() da biblioteca Pillow e, em seguida, salvar explicitamente como PNG usando img.save("output.png", format="PNG"). Se você gravar os bytes decodificados do base64 diretamente em um arquivo .png, o formato real dependerá dos bytes originais retornados pela API — e existe um bug conhecido onde a API alega ser PNG, mas retorna JPEG.
Q2: Por que o AI Studio não suporta `outputMimeType`, mas o Vertex AI suporta?
O AI Studio (Gemini API) é posicionado como uma ferramenta de prototipagem rápida para desenvolvedores, com funcionalidades mais enxutas. O Vertex AI é voltado para ambientes de produção corporativa, oferecendo um controle de parâmetros mais completo. A definição de tipo do SDK JS do Google indica claramente que outputMimeType "Não é suportado na Gemini API". Se você precisa de controle de formato no servidor, mude para o Vertex AI ou faça a invocação do modelo através da interface unificada da APIYI (apiyi.com).
Q3: Após a redução do tamanho das imagens 4K, ainda vale a pena usar a resolução 4K?
Depende do uso. Embora o tamanho da saída 4K tenha diminuído, a resolução ainda é de 4096×4096 pixels, o que continua sendo valioso para impressões, exibições em grandes formatos, etc. Se o seu caso de uso for redes sociais ou exibição na web, 2K (2048px) pode ser uma escolha com melhor custo-benefício — tamanho menor e custo de API mais baixo ($0,101/imagem vs $0,151/imagem).
Q4: Existe alguma maneira de restaurar a saída de alta qualidade de 30 MB de antes?
Atualmente, não. A redução de tamanho é um ajuste nos parâmetros de computação do servidor do Google, e o usuário não pode controlá-la via parâmetros da API. Quando a capacidade de produção do Google TPU v7 for atingida em meados de 2026, a potência total poderá ser restaurada. As soluções alternativas atuais são: usar comandos mais detalhados para orientar a geração de mais detalhes de textura ou gerar imagens em 2K e usar um modelo de super-resolução (como o Real-ESRGAN) para ampliar para 4K.
Resumo
Pontos principais sobre o controle de formato de saída de imagem da API Nano Banana 2:
- O AI Studio não suporta controle de formato no lado do servidor: É necessário decodificar o base64 no lado do cliente e usar a biblioteca Pillow para salvar explicitamente como PNG, atentando-se à verificação dos magic bytes para confirmar o formato real.
- O Vertex AI suporta
outputMimeType: Você pode especificar diretamenteimage/pngouimage/jpegna requisição, além de definir a qualidade de compressão JPEG. - A redução de tamanho em 4K é um ajuste de poder computacional: A queda de 30MB para 8MB não se deve a uma mudança de formato, mas sim à redução de passos de inferência e precisão de ponto flutuante feita pelo Google, o que diminui a entropia da informação; os usuários não conseguem restaurar isso via parâmetros.
Ao compreender esses mecanismos subjacentes, você poderá escolher a estratégia de salvamento de formato mais adequada para suas necessidades reais.
Recomendamos utilizar a APIYI (apiyi.com) para validar rapidamente os efeitos de diferentes formatos e parâmetros. A plataforma oferece créditos gratuitos e uma interface unificada, suportando diversas formas de invocação do Nano Banana 2.
📚 Referências
-
Documentação de desenvolvimento de geração de imagens do Gemini: Referência oficial da API, incluindo a descrição dos parâmetros
ImageConfig.- Link:
ai.google.dev/gemini-api/docs/image-generation - Nota: Entenda os parâmetros e limitações ao chamar via AI Studio.
- Link:
-
Referência do
ImageOutputOptionsno Vertex AI: Documentação completa dos parâmetros de controle de formato do Vertex AI.- Link:
docs.cloud.google.com/vertex-ai/generative-ai/docs/reference/rest/Shared.Types/ImageOutputOptions - Nota: Contém explicações detalhadas sobre
mimeTypeecompressionQuality.
- Link:
-
GitHub Issue #1824 – Incompatibilidade de tipo MIME: Relatório de bug onde a API declara PNG, mas retorna JPEG.
- Link:
github.com/googleapis/python-genai/issues/1824 - Nota: Entenda os detalhes técnicos e as soluções temporárias para este problema conhecido.
- Link:
-
Central de Documentação da APIYI: Guia de controle de formato para invocar o Nano Banana 2 via interface unificada.
- Link:
docs.apiyi.com - Nota: Ideal para desenvolvedores que precisam simplificar o fluxo de processamento de formatos.
- Link:
Autor: Equipe Técnica da APIYI
Troca técnica: Sinta-se à vontade para discutir na seção de comentários. Para mais materiais, visite a central de documentação da APIYI em docs.apiyi.com.
