O Gemini pode gerar e processar imagens de forma conversacional. Você pode usar texto, imagens ou uma combinação dos dois para pedir ao Gemini e realizar várias tarefas relacionadas a imagens, como geração e edição. Todas as imagens geradas incluem uma marca-d'água do SynthID.
A geração de imagens pode não estar disponível em todas as regiões e países. Consulte nossa página de modelos do Gemini para mais informações.
Geração de imagens (texto em imagem)
O código a seguir demonstra como gerar uma imagem com base em um comando descritivo. Você precisa incluir responseModalities
: ["TEXT", "IMAGE"]
na sua configuração. A saída somente de imagem não é compatível com esses modelos.
Python
from google import genai from google.genai import types from PIL import Image from io import BytesIO import base64 client = genai.Client() contents = ('Hi, can you create a 3d rendered image of a pig ' 'with wings and a top hat flying over a happy ' 'futuristic scifi city with lots of greenery?') response = client.models.generate_content( model="gemini-2.0-flash-preview-image-generation", contents=contents, config=types.GenerateContentConfig( response_modalities=['TEXT', 'IMAGE'] ) ) for part in response.candidates[0].content.parts: if part.text is not None: print(part.text) elif part.inline_data is not None: image = Image.open(BytesIO((part.inline_data.data))) image.save('gemini-native-image.png') image.show()
JavaScript
import { GoogleGenAI, Modality } from "@google/genai"; import * as fs from "node:fs"; async function main() { const ai = new GoogleGenAI({}); const contents = "Hi, can you create a 3d rendered image of a pig " + "with wings and a top hat flying over a happy " + "futuristic scifi city with lots of greenery?"; // Set responseModalities to include "Image" so the model can generate an image const response = await ai.models.generateContent({ model: "gemini-2.0-flash-preview-image-generation", contents: contents, config: { responseModalities: [Modality.TEXT, Modality.IMAGE], }, }); for (const part of response.candidates[0].content.parts) { // Based on the part type, either show the text or save the image if (part.text) { console.log(part.text); } else if (part.inlineData) { const imageData = part.inlineData.data; const buffer = Buffer.from(imageData, "base64"); fs.writeFileSync("gemini-native-image.png", buffer); console.log("Image saved as gemini-native-image.png"); } } } main();
Go
package main import ( "context" "fmt" "os" "google.golang.org/genai" ) func main() { ctx := context.Background() client, err := genai.NewClient(ctx, nil) if err != nil { log.Fatal(err) } config := &genai.GenerateContentConfig{ ResponseModalities: []string{"TEXT", "IMAGE"}, } result, _ := client.Models.GenerateContent( ctx, "gemini-2.0-flash-preview-image-generation", genai.Text("Hi, can you create a 3d rendered image of a pig " + "with wings and a top hat flying over a happy " + "futuristic scifi city with lots of greenery?"), config, ) for _, part := range result.Candidates[0].Content.Parts { if part.Text != "" { fmt.Println(part.Text) } else if part.InlineData != nil { imageBytes := part.InlineData.Data outputFilename := "gemini_generated_image.png" _ = os.WriteFile(outputFilename, imageBytes, 0644) } } }
REST
curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-preview-image-generation:generateContent" \ -H "x-goog-api-key: $GEMINI_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "contents": [{ "parts": [ {"text": "Hi, can you create a 3d rendered image of a pig with wings and a top hat flying over a happy futuristic scifi city with lots of greenery?"} ] }], "generationConfig":{"responseModalities":["TEXT","IMAGE"]} }' \ | grep -o '"data": "[^"]*"' \ | cut -d'"' -f4 \ | base64 --decode > gemini-native-image.png

Edição de imagens (texto e imagem para imagem)
Para editar uma imagem, adicione uma imagem como entrada. O exemplo a seguir demonstra o upload de imagens codificadas em base64. Para várias imagens e payloads maiores, consulte a seção entrada de imagem.
Python
from google import genai from google.genai import types from PIL import Image from io import BytesIO import PIL.Image image = PIL.Image.open('/path/to/image.png') client = genai.Client() text_input = ('Hi, This is a picture of me.' 'Can you add a llama next to me?',) response = client.models.generate_content( model="gemini-2.0-flash-preview-image-generation", contents=[text_input, image], config=types.GenerateContentConfig( response_modalities=['TEXT', 'IMAGE'] ) ) for part in response.candidates[0].content.parts: if part.text is not None: print(part.text) elif part.inline_data is not None: image = Image.open(BytesIO((part.inline_data.data))) image.show()
JavaScript
import { GoogleGenAI, Modality } from "@google/genai"; import * as fs from "node:fs"; async function main() { const ai = new GoogleGenAI({}); // Load the image from the local file system const imagePath = "path/to/image.png"; const imageData = fs.readFileSync(imagePath); const base64Image = imageData.toString("base64"); // Prepare the content parts const contents = [ { text: "Can you add a llama next to the image?" }, { inlineData: { mimeType: "image/png", data: base64Image, }, }, ]; // Set responseModalities to include "Image" so the model can generate an image const response = await ai.models.generateContent({ model: "gemini-2.0-flash-preview-image-generation", contents: contents, config: { responseModalities: [Modality.TEXT, Modality.IMAGE], }, }); for (const part of response.candidates[0].content.parts) { // Based on the part type, either show the text or save the image if (part.text) { console.log(part.text); } else if (part.inlineData) { const imageData = part.inlineData.data; const buffer = Buffer.from(imageData, "base64"); fs.writeFileSync("gemini-native-image.png", buffer); console.log("Image saved as gemini-native-image.png"); } } } main();
Go
package main import ( "context" "fmt" "os" "google.golang.org/genai" ) func main() { ctx := context.Background() client, err := genai.NewClient(ctx, nil) if err != nil { log.Fatal(err) } imagePath := "/path/to/image.png" imgData, _ := os.ReadFile(imagePath) parts := []*genai.Part{ genai.NewPartFromText("Hi, This is a picture of me. Can you add a llama next to me?"), &genai.Part{ InlineData: &genai.Blob{ MIMEType: "image/png", Data: imgData, }, }, } contents := []*genai.Content{ genai.NewContentFromParts(parts, genai.RoleUser), } config := &genai.GenerateContentConfig{ ResponseModalities: []string{"TEXT", "IMAGE"}, } result, _ := client.Models.GenerateContent( ctx, "gemini-2.0-flash-preview-image-generation", contents, config, ) for _, part := range result.Candidates[0].Content.Parts { if part.Text != "" { fmt.Println(part.Text) } else if part.InlineData != nil { imageBytes := part.InlineData.Data outputFilename := "gemini_generated_image.png" _ = os.WriteFile(outputFilename, imageBytes, 0644) } } }
REST
IMG_PATH=/path/to/your/image1.jpeg if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then B64FLAGS="--input" else B64FLAGS="-w0" fi IMG_BASE64=$(base64 "$B64FLAGS" "$IMG_PATH" 2>&1) curl -X POST \ "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-preview-image-generation:generateContent" \ -H "x-goog-api-key: $GEMINI_API_KEY" \ -H 'Content-Type: application/json' \ -d "{ \"contents\": [{ \"parts\":[ {\"text\": \"'Hi, This is a picture of me. Can you add a llama next to me\"}, { \"inline_data\": { \"mime_type\":\"image/jpeg\", \"data\": \"$IMG_BASE64\" } } ] }], \"generationConfig\": {\"responseModalities\": [\"TEXT\", \"IMAGE\"]} }" \ | grep -o '"data": "[^"]*"' \ | cut -d'"' -f4 \ | base64 --decode > gemini-edited-image.png
Outros modos de geração de imagens
O Gemini oferece suporte a outros modos de interação com imagens com base na estrutura e no contexto do comando, incluindo:
- Texto para imagens e texto (intercalado): gera imagens com texto relacionado.
- Exemplo de comando: "Gere uma receita ilustrada de paella".
- Imagens e texto para imagens e texto (intercalados): usa imagens e texto de entrada para criar novas imagens e texto relacionados.
- Exemplo de comando: (com uma imagem de um quarto mobiliado) "Quais outras cores de sofás ficariam boas no meu espaço? Você pode atualizar a imagem?"
- Edição de imagens com várias interações (chat): continue gerando / editando imagens de forma conversacional.
- Exemplos de comandos: [faça upload de uma imagem de um carro azul]. , "Transforme este carro em um conversível", "Agora mude a cor para amarelo."
Limitações
- Para ter o melhor desempenho, use os seguintes idiomas: EN, es-MX, ja-JP, zh-CN e hi-IN.
- A geração de imagens não aceita entradas de áudio ou vídeo.
- A geração de imagens nem sempre é acionada:
- O modelo pode gerar apenas texto. Peça imagens explicitamente (por exemplo, "gere uma imagem", "forneça imagens ao longo do texto", "atualize a imagem").
- O modelo pode parar de gerar no meio da resposta. Tente de novo ou use outro comando.
- Ao gerar texto para uma imagem, o Gemini funciona melhor se você primeiro gerar o texto e depois pedir uma imagem com ele.
- A geração de imagens não está disponível em algumas regiões/países. Consulte Modelos para mais informações.
Quando usar o Imagen
Além de usar os recursos integrados de geração de imagens do Gemini, você também pode acessar o Imagen, nosso modelo especializado de geração de imagens, pela API Gemini.
Escolha o Gemini quando:
- Você precisa de imagens contextualmente relevantes que aproveitem o conhecimento e o raciocínio mundiais.
- É importante combinar texto e imagens de forma integrada.
- Você quer recursos visuais precisos incorporados em sequências de texto longas.
- Você quer editar imagens de forma conversacional, mantendo o contexto.
Escolha Imagen quando:
- Qualidade da imagem, fotorrealismo, detalhes artísticos ou estilos específicos (por exemplo, impressionismo, anime) são as principais prioridades.
- Realizar tarefas de edição especializadas, como atualizações de plano de fundo de produtos ou ampliação de imagens.
- Infundir branding, estilo ou gerar logotipos e designs de produtos.
O Imagen 4 é o modelo ideal para começar a gerar imagens com o Imagen. Escolha o Imagen 4 Ultra para casos de uso avançados ou quando você precisar da melhor qualidade de imagem. O Imagen 4 Ultra só pode gerar uma imagem por vez.
A seguir
- Confira o guia do Veo para saber como gerar vídeos com a API Gemini.
- Para saber mais sobre os modelos do Gemini, consulte Modelos do Gemini e Modelos experimentais.