Geração de imagens com o Gemini

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 
Imagem gerada por IA de um porco voador fantástico
Imagem gerada com IA de um porco voador fantástico

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