Bilder mit Gemini erstellen

Gemini kann Bilder im Rahmen von Unterhaltungen generieren und verarbeiten. Sie können Gemini mit Text, Bildern oder einer Kombination aus beidem auffordern, verschiedene bildbezogene Aufgaben auszuführen, z. B. Bilder zu generieren und zu bearbeiten. Alle generierten Bilder enthalten ein SynthID-Wasserzeichen.

Die Bildgenerierung ist möglicherweise nicht in allen Regionen und Ländern verfügbar. Weitere Informationen finden Sie auf der Seite Gemini-Modelle.

Bildgenerierung (Text-zu-Bild)

Der folgende Code zeigt, wie ein Bild auf Grundlage eines beschreibenden Prompts generiert wird. Sie müssen responseModalities: ["TEXT", "IMAGE"] in Ihre Konfiguration aufnehmen. Die reine Bildausgabe wird bei diesen Modellen nicht unterstützt.

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(); 

Ok

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 
KI-generiertes Bild eines fantastischen fliegenden Schweins
KI-generiertes Bild eines fantastischen fliegenden Schweins

Bildbearbeitung (Text-und-Bild-zu-Bild)

Wenn Sie ein Bild bearbeiten möchten, fügen Sie es als Eingabe hinzu. Im folgenden Beispiel wird gezeigt, wie base64-codierte Bilder hochgeladen werden. Informationen zu mehreren Bildern und größeren Nutzlasten finden Sie im Abschnitt Bildeingabe.

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(); 

Ok

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 

Andere Modi zur Bildgenerierung

Gemini unterstützt je nach Prompt-Struktur und Kontext auch andere Modi für die Bildinteraktion:

  • Text zu Bild(ern) und Text (verschachtelt): Es werden Bilder mit zugehörigem Text ausgegeben.
    • Beispiel-Prompt: „Erstelle ein illustriertes Rezept für eine Paella.“
  • Bild(er) und Text zu Bild(ern) und Text (verschachtelt): Verwendet Eingabebilder und ‑text, um neue zugehörige Bilder und Texte zu erstellen.
    • Beispielprompt: (Mit einem Bild eines möblierten Zimmers) „Welche anderen Farben für Sofas würden in meinem Raum passen? Kannst du das Bild aktualisieren?“
  • Multi-Turn-Bildbearbeitung (Chat): Sie können Bilder im Chat generieren und bearbeiten lassen.
    • Beispiel-Prompts: [Lade ein Bild eines blauen Autos hoch.] , „Mach aus diesem Auto ein Cabrio.“ „Ändere die Farbe jetzt in Gelb.“

Beschränkungen

  • Die beste Leistung erzielen Sie mit den folgenden Sprachen: EN, es-MX, ja-JP, zh-CN, hi-IN.
  • Bei der Bildgenerierung werden keine Audio- oder Videoeingaben unterstützt.
  • Die Bildgenerierung wird möglicherweise nicht immer ausgelöst:
    • Das Modell kann nur Text ausgeben. Fordern Sie die Bildausgabe explizit an, z.B. „Generiere ein Bild“, „Stelle Bilder zur Verfügung“ oder „Aktualisiere das Bild“.
    • Das Modell kann die Generierung von Inhalten mittendrin beenden. Versuchen Sie es noch einmal oder verwenden Sie einen anderen Prompt.
  • Wenn Sie Text für ein Bild generieren, funktioniert Gemini am besten, wenn Sie zuerst den Text generieren und dann ein Bild mit dem Text anfordern.
  • In einigen Regionen/Ländern ist die Bildgenerierung nicht verfügbar. Weitere Informationen finden Sie unter Modelle.

Wann sollte Imagen verwendet werden?

Zusätzlich zur integrierten Bildgenerierung von Gemini können Sie über die Gemini API auch auf Imagen zugreifen, unser spezielles Modell zur Bildgenerierung.

Wählen Sie Gemini aus, wenn:

  • Sie benötigen kontextbezogene Bilder, die auf Weltwissen und Schlussfolgerungen basieren.
  • Es ist wichtig, Text und Bilder nahtlos ineinander übergehen zu lassen.
  • Sie möchten, dass genaue Bilder in lange Textsequenzen eingebettet werden.
  • Sie möchten Bilder im Dialog bearbeiten und dabei den Kontext beibehalten.

Wählen Sie Imagen aus, wenn:

  • Bildqualität, Fotorealismus, künstlerische Details oder bestimmte Stile (z.B. Impressionismus, Anime) haben höchste Priorität.
  • Spezielle Bearbeitungsaufgaben wie das Aktualisieren des Produkthintergrunds oder das Hochskalieren von Bildern.
  • Branding und Stil einfließen lassen oder Logos und Produktdesigns generieren

Imagen 4 sollte Ihr Standardmodell sein, wenn Sie mit Imagen Bilder generieren. Wählen Sie Imagen 4 Ultra für anspruchsvolle Anwendungsfälle oder wenn Sie die beste Bildqualität benötigen. Mit Imagen 4 Ultra kann jeweils nur ein Bild generiert werden.

Nächste Schritte