Bilder mit Gemini generieren

Gemini 2.5 Flash Image unterstützt die Generierung von Antworten in mehreren Modalitäten, darunter Text und Bilder.

Bildgenerierung

Gemini 2.5 Flash Image (gemini-2.5-flash-image) unterstützt die Generierung von Bildern zusätzlich zu Text. Dadurch werden die Funktionen von Gemini um Folgendes erweitert:

  • Bilder iterativ durch Unterhaltungen in natürlicher Sprache generieren, Bilder anpassen und dabei Konsistenz und Kontext beibehalten.
  • Bilder mit hochwertiger Darstellung von langem Text generieren
  • Verschachtelte Text-Bild-Ausgabe generieren Zum Beispiel ein Blogbeitrag mit Text und Bildern in einem einzigen Turn. Bisher war es dazu erforderlich, mehrere Modelle zu kombinieren.
  • Bilder mit dem Wissen und den Logikfunktionen von Gemini generieren

Mit dieser öffentlichen experimentellen Version kann Gemini 2.5 Flash Image Bilder in 1.024 Pixeln generieren. Außerdem werden Bilder von Personen unterstützt und es sind aktualisierte Sicherheitsfilter enthalten, die eine flexiblere und weniger restriktive Nutzung ermöglichen.

Er unterstützt die folgenden Modalitäten und Funktionen:

  • Text zu Bild

    • Beispiel-Prompt: „Erstelle ein Bild des Eiffelturms mit Feuerwerk im Hintergrund.“
  • Text zu Bild (Textrendering)

    • Beispiel-Prompt: „Erstelle ein kinoreifes Foto eines großen Gebäudes mit dieser riesigen Textprojektion auf der Vorderseite des Gebäudes: ‚Gemini 2.5 kann jetzt Langformtext generieren‘.“
  • Text zu Bild(ern) und Text (verschachtelt)

    • Beispiel-Prompt: „Generiere ein illustriertes Rezept für eine Paella. Erstelle Bilder neben dem Text, während du das Rezept generierst.“
    • Beispielprompt: „Erstelle eine Geschichte über einen Hund in einem 3D-Cartoon-Animationsstil. Generiere für jede Szene ein Bild.“
  • Bild(er) und Text zu Bild(ern) und Text (verschachtelt)

    • Beispiel-Prompt (mit einem Bild eines möblierten Raums): „Welche anderen Sofafarben würden in meinen Raum passen? Kannst du das Bild aktualisieren?“
  • Sprachorientierte Bildgenerierung

    • Beispielprompt: „Generiere ein Bild von einem Frühstück.“

Best Practices

Mit diesen Best Practices können Sie die Ergebnisse der Bildgenerierung verbessern:

  • Konkret sein:Je mehr Details Sie angeben, desto mehr Kontrolle haben Sie. Anstelle von „Fantasy-Rüstung“ können Sie beispielsweise „aufwendige elfenhafte Plattenrüstung mit eingravierten Silberblattmustern, hohem Kragen und Schulterstücken in Form von Falkenflügeln“ eingeben.

  • Kontext und Intention angeben:Erläutern Sie den Zweck des Bildes, damit das Modell den Kontext besser versteht. „Erstelle ein Logo für eine hochwertige, minimalistische Hautpflegemarke“ ist besser als „Erstelle ein Logo“.

  • Wiederholen und verfeinern:Erwarten Sie nicht, dass Sie beim ersten Versuch ein perfektes Bild erhalten. Verwenden Sie Folgeprompts, um kleine Änderungen vorzunehmen, z. B. „Mach die Beleuchtung wärmer“ oder „Ändere den Gesichtsausdruck der Figur, sodass sie ernster wirkt“.

  • Schritt-für-Schritt-Anleitung verwenden:Teilen Sie komplexe Szenen in Schritte auf. Zum Beispiel: „Erstelle zuerst einen Hintergrund mit einem ruhigen, nebligen Wald in der Morgendämmerung. Fügen Sie dann im Vordergrund einen moosbewachsenen alten Steinaltar hinzu. Stelle schließlich ein einzelnes, leuchtendes Schwert auf den Altar.“

  • Beschreiben Sie, was Sie möchten, nicht was Sie nicht möchten:Sagen Sie nicht „keine Autos“, sondern beschreiben Sie die Szene positiv, z. B. „eine leere, verlassene Straße ohne Anzeichen von Verkehr“.

  • Kamera steuern:Sie können die Kameraansicht anpassen. Verwenden Sie fotografische und filmische Begriffe, um die Komposition zu beschreiben, z. B. „Weitwinkelaufnahme“, „Makroaufnahme“ oder „Froschperspektive“.

  • Prompts für Bilder:Beschreiben Sie die Absicht mit Formulierungen wie „Erstelle ein Bild von“ oder „Generiere ein Bild von“. Andernfalls antwortet das multimodale Modell möglicherweise mit Text statt mit dem Bild.

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.

  • Das Modell erstellt möglicherweise nicht genau die Anzahl der Bilder, die Sie anfordern.

  • Die besten Ergebnisse erzielen Sie, wenn Sie maximal drei Bilder in einen Prompt einfügen.

  • Wenn Sie ein Bild mit Text generieren, generieren Sie zuerst den Text und dann ein Bild mit diesem Text.

  • Die Bild- oder Texterstellung funktioniert in den folgenden Situationen möglicherweise nicht wie erwartet:

    • Das Modell kann möglicherweise nur Text erstellen. Wenn Sie Bilder möchten, müssen Sie in Ihrem Prompt explizit danach fragen. Zum Beispiel „Stelle im Laufe der Zeit Bilder bereit.“

    • Das Modell kann Text als Bild erstellen. Wenn Sie Text generieren möchten, müssen Sie explizit nach einer Textausgabe fragen. Zum Beispiel: „Erstelle einen narrativen Text mit Illustrationen.“

    • Das Modell beendet die Generierung von Inhalten möglicherweise, bevor es fertig ist. Wenn das passiert, versuchen Sie es noch einmal oder verwenden Sie einen anderen Prompt.

    • Wenn ein Prompt potenziell unsicher ist, verarbeitet das Modell die Anfrage möglicherweise nicht und gibt eine Antwort zurück, in der darauf hingewiesen wird, dass es keine unsicheren Bilder erstellen kann. In diesem Fall ist die FinishReason STOP.

Bilder erstellen

In den folgenden Abschnitten wird beschrieben, wie Sie Bilder mit Vertex AI Studio oder der API generieren.

Anleitungen und Best Practices für Prompts finden Sie unter Multimodale Prompts entwerfen.

Console

So verwenden Sie die Bildgenerierung:

  1. Öffnen Sie Vertex AI Studio > Prompt erstellen.
  2. Klicken Sie auf Modell wechseln und wählen Sie im Menü gemini-2.5-flash-image aus.
  3. Wählen Sie im Bereich Ausgaben im Drop-down-Menü die Option Bild und Text aus.
  4. Geben Sie im Textbereich Prompt schreiben eine Beschreibung des Bildes ein, das Sie generieren möchten.
  5. Klicken Sie auf die Schaltfläche Prompt ().

Gemini generiert ein Bild basierend auf Ihrer Beschreibung. Dieser Vorgang sollte einige Sekunden dauern, kann aber je nach Kapazität vergleichsweise langsam sein.

Python

Installieren

pip install --upgrade google-genai

Weitere Informationen finden Sie in der SDK-Referenzdokumentation.

Umgebungsvariablen für die Verwendung des Gen AI SDK mit Vertex AI festlegen:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

from google import genai
from google.genai.types import GenerateContentConfig, Modality
from PIL import Image
from io import BytesIO

client = genai.Client()

response = client.models.generate_content(
    model="gemini-2.5-flash-image",
    contents=("Generate an image of the Eiffel tower with fireworks in the background."),
    config=GenerateContentConfig(
        response_modalities=[Modality.TEXT, Modality.IMAGE],
        candidate_count=1,
        safety_settings=[
            {"method": "PROBABILITY"},
            {"category": "HARM_CATEGORY_DANGEROUS_CONTENT"},
            {"threshold": "BLOCK_MEDIUM_AND_ABOVE"},
        ],
    ),
)
for part in response.candidates[0].content.parts:
    if part.text:
        print(part.text)
    elif part.inline_data:
        image = Image.open(BytesIO((part.inline_data.data)))
        image.save("output_folder/example-image-eiffel-tower.png")
# Example response:
#   I will generate an image of the Eiffel Tower at night, with a vibrant display of
#   colorful fireworks exploding in the dark sky behind it. The tower will be
#   illuminated, standing tall as the focal point of the scene, with the bursts of
#   light from the fireworks creating a festive atmosphere.

Node.js

Installieren

npm install @google/genai

Weitere Informationen finden Sie in der SDK-Referenzdokumentation.

Umgebungsvariablen für die Verwendung des Gen AI SDK mit Vertex AI festlegen:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

const fs = require('fs');
const {GoogleGenAI, Modality} = require('@google/genai');

const GOOGLE_CLOUD_PROJECT = process.env.GOOGLE_CLOUD_PROJECT;
const GOOGLE_CLOUD_LOCATION =
  process.env.GOOGLE_CLOUD_LOCATION || 'us-central1';

async function generateContent(
  projectId = GOOGLE_CLOUD_PROJECT,
  location = GOOGLE_CLOUD_LOCATION
) {
  const client = new GoogleGenAI({
    vertexai: true,
    project: projectId,
    location: location,
  });

  const response = await client.models.generateContentStream({
    model: 'gemini-2.5-flash-image',
    contents:
      'Generate an image of the Eiffel tower with fireworks in the background.',
    config: {
      responseModalities: [Modality.TEXT, Modality.IMAGE],
    },
  });

  const generatedFileNames = [];
  let imageIndex = 0;
  for await (const chunk of response) {
    const text = chunk.text;
    const data = chunk.data;
    if (text) {
      console.debug(text);
    } else if (data) {
      const fileName = `generate_content_streaming_image_${imageIndex++}.png`;
      console.debug(`Writing response image to file: ${fileName}.`);
      try {
        fs.writeFileSync(fileName, data);
        generatedFileNames.push(fileName);
      } catch (error) {
        console.error(`Failed to write image file ${fileName}:`, error);
      }
    }
  }

  return generatedFileNames;
}

Java

Informationen zum Installieren oder Aktualisieren von Java

Weitere Informationen finden Sie in der SDK-Referenzdokumentation.

Umgebungsvariablen für die Verwendung des Gen AI SDK mit Vertex AI festlegen:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True


import com.google.genai.Client;
import com.google.genai.types.Blob;
import com.google.genai.types.Candidate;
import com.google.genai.types.Content;
import com.google.genai.types.GenerateContentConfig;
import com.google.genai.types.GenerateContentResponse;
import com.google.genai.types.Part;
import com.google.genai.types.SafetySetting;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.imageio.ImageIO;

public class ImageGenMmFlashWithText {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String modelId = "gemini-2.5-flash-image";
    String outputFile = "resources/output/example-image-eiffel-tower.png";
    generateContent(modelId, outputFile);
  }

  // Generates an image with text input
  public static void generateContent(String modelId, String outputFile) throws IOException {
    // Client Initialization. Once created, it can be reused for multiple requests.
    try (Client client = Client.builder().location("global").vertexAI(true).build()) {

      GenerateContentConfig contentConfig =
          GenerateContentConfig.builder()
              .responseModalities("TEXT", "IMAGE")
              .candidateCount(1)
              .safetySettings(
                  SafetySetting.builder()
                      .method("PROBABILITY")
                      .category("HARM_CATEGORY_DANGEROUS_CONTENT")
                      .threshold("BLOCK_MEDIUM_AND_ABOVE")
                      .build())
              .build();

      GenerateContentResponse response =
          client.models.generateContent(
              modelId,
              "Generate an image of the Eiffel tower with fireworks in the background.",
              contentConfig);

      // Get parts of the response
      List<Part> parts =
          response
              .candidates()
              .flatMap(candidates -> candidates.stream().findFirst())
              .flatMap(Candidate::content)
              .flatMap(Content::parts)
              .orElse(new ArrayList<>());

      // For each part print text if present, otherwise read image data if present and
      // write it to the output file
      for (Part part : parts) {
        if (part.text().isPresent()) {
          System.out.println(part.text().get());
        } else if (part.inlineData().flatMap(Blob::data).isPresent()) {
          BufferedImage image =
              ImageIO.read(new ByteArrayInputStream(part.inlineData().flatMap(Blob::data).get()));
          ImageIO.write(image, "png", new File(outputFile));
        }
      }

      System.out.println("Content written to: " + outputFile);
      // Example response:
      // Here is the Eiffel Tower with fireworks in the background...
      //
      // Content written to: resources/output/example-image-eiffel-tower.png
    }
  }
}

REST

Führen Sie den folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${API_ENDPOINT}:generateContent \
  -d '{
    "contents": {
      "role": "USER",
      "parts": { "text": "Create a tutorial explaining how to make a peanut butter and jelly sandwich in three easy steps."},
    },
    "generation_config": {
      "response_modalities": ["TEXT", "IMAGE"],
      "image_config": {
        "aspect_ratio": "16:9",
      },
     },
     "safetySettings": {
      "method": "PROBABILITY",
      "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
      "threshold": "BLOCK_MEDIUM_AND_ABOVE"
    },
  }' 2>/dev/null >response.json

Gemini generiert ein Bild basierend auf Ihrer Beschreibung. Dieser Vorgang sollte einige Sekunden dauern, kann aber je nach Kapazität vergleichsweise langsam sein.

Verschachtelte Bilder und Texte erstellen

Gemini 2.5 Flash Image kann Bilder in seine Textantworten einfügen. So können Sie beispielsweise Bilder generieren, die zeigen, wie die einzelnen Schritte eines generierten Rezepts aussehen könnten, ohne dass Sie separate Anfragen an das Modell stellen müssen.

Console

So erstellen Sie verschachtelte Bilder mit Textantworten:

  1. Öffnen Sie Vertex AI Studio > Prompt erstellen.
  2. Klicken Sie auf Modell wechseln und wählen Sie im Menü gemini-2.5-flash-image aus.
  3. Wählen Sie im Bereich Ausgaben im Drop-down-Menü die Option Bild und Text aus.
  4. Geben Sie im Textbereich Prompt schreiben eine Beschreibung des Bildes ein, das Sie generieren möchten. Beispiel: „Erstelle eine Anleitung, in der erklärt wird, wie man in drei einfachen Schritten ein Erdnussbutter- und Marmeladenbrot zubereitet. Gib für jeden Schritt einen Titel mit der Nummer des Schritts und eine Erklärung an und generiere auch ein Bild. Generiere jedes Bild im Seitenverhältnis 1:1.“
  5. Klicken Sie auf die Schaltfläche Prompt ().

Gemini generiert eine Antwort basierend auf Ihrer Beschreibung. Dieser Vorgang sollte einige Sekunden dauern, kann aber je nach Kapazität vergleichsweise langsam sein.

Python

Installieren

pip install --upgrade google-genai

Weitere Informationen finden Sie in der SDK-Referenzdokumentation.

Umgebungsvariablen für die Verwendung des Gen AI SDK mit Vertex AI festlegen:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

from google import genai
from google.genai.types import GenerateContentConfig, Modality
from PIL import Image
from io import BytesIO

client = genai.Client()

response = client.models.generate_content(
    model="gemini-2.5-flash-image",
    contents=(
        "Generate an illustrated recipe for a paella."
        "Create images to go alongside the text as you generate the recipe"
    ),
    config=GenerateContentConfig(response_modalities=[Modality.TEXT, Modality.IMAGE]),
)
with open("output_folder/paella-recipe.md", "w") as fp:
    for i, part in enumerate(response.candidates[0].content.parts):
        if part.text is not None:
            fp.write(part.text)
        elif part.inline_data is not None:
            image = Image.open(BytesIO((part.inline_data.data)))
            image.save(f"output_folder/example-image-{i+1}.png")
            fp.write(f"![image](example-image-{i+1}.png)")
# Example response:
#  A markdown page for a Paella recipe(`paella-recipe.md`) has been generated.
#   It includes detailed steps and several images illustrating the cooking process.

Java

Informationen zum Installieren oder Aktualisieren von Java

Weitere Informationen finden Sie in der SDK-Referenzdokumentation.

Umgebungsvariablen für die Verwendung des Gen AI SDK mit Vertex AI festlegen:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True


import com.google.genai.Client;
import com.google.genai.types.Blob;
import com.google.genai.types.Candidate;
import com.google.genai.types.Content;
import com.google.genai.types.GenerateContentConfig;
import com.google.genai.types.GenerateContentResponse;
import com.google.genai.types.Part;
import java.awt.image.BufferedImage;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.imageio.ImageIO;

public class ImageGenMmFlashTextAndImageWithText {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String modelId = "gemini-2.5-flash-image";
    String outputFile = "resources/output/paella-recipe.md";
    generateContent(modelId, outputFile);
  }

  // Generates text and image with text input
  public static void generateContent(String modelId, String outputFile) throws IOException {
    // Client Initialization. Once created, it can be reused for multiple requests.
    try (Client client = Client.builder().location("global").vertexAI(true).build()) {

      GenerateContentResponse response =
          client.models.generateContent(
              modelId,
              Content.fromParts(
                  Part.fromText("Generate an illustrated recipe for a paella."),
                  Part.fromText(
                      "Create images to go alongside the text as you generate the recipe.")),
              GenerateContentConfig.builder().responseModalities("TEXT", "IMAGE").build());

      try (BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile))) {

        // Get parts of the response
        List<Part> parts =
            response
                .candidates()
                .flatMap(candidates -> candidates.stream().findFirst())
                .flatMap(Candidate::content)
                .flatMap(Content::parts)
                .orElse(new ArrayList<>());

        int index = 1;
        // For each part print text if present, otherwise read image data if present and
        // write it to the output file
        for (Part part : parts) {
          if (part.text().isPresent()) {
            writer.write(part.text().get());
          } else if (part.inlineData().flatMap(Blob::data).isPresent()) {
            BufferedImage image =
                ImageIO.read(new ByteArrayInputStream(part.inlineData().flatMap(Blob::data).get()));
            ImageIO.write(
                image, "png", new File("resources/output/example-image-" + index + ".png"));
            writer.write("![image](example-image-" + index + ".png)");
          }
          index++;
        }

        System.out.println("Content written to: " + outputFile);

        // Example response:
        // A markdown page for a Paella recipe(`paella-recipe.md`) has been generated.
        // It includes detailed steps and several images illustrating the cooking process.
        //
        // Content written to:  resources/output/paella-recipe.md
      }
    }
  }
}

REST

Führen Sie den folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${API_ENDPOINT}:generateContent \
  -d '{
    "contents": {
      "role": "USER",
      "parts": { "text": "Create a tutorial explaining how to make a peanut butter and jelly sandwich in three easy steps. For each step, provide a title with the number of the step, an explanation, and also generate an image, generate each image in a 1:1 aspect ratio."},
    },
    "generation_config": {
      "response_modalities": ["TEXT", "IMAGE"],
      "image_config": {
        "aspect_ratio": "16:9",
      },
    },
    "safetySettings": {
      "method": "PROBABILITY",
      "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
      "threshold": "BLOCK_MEDIUM_AND_ABOVE"
    },
  }' 2>/dev/null >response.json

Gemini generiert ein Bild basierend auf Ihrer Beschreibung. Dieser Vorgang sollte einige Sekunden dauern, kann aber je nach Kapazität vergleichsweise langsam sein.

Sprachorientierte Bildgenerierung

Gemini 2.5 Flash Image kann auch Informationen zu Ihrem Standort in Text- oder Bildantworten einfügen. Sie können beispielsweise Bilder von Orten oder Erlebnissen generieren, die Ihren aktuellen Standort berücksichtigen, ohne dass Sie dem Modell Ihren Standort angeben müssen.

Console

So verwenden Sie die sprachorientierte Bildgenerierung:

  1. Öffnen Sie Vertex AI Studio > Prompt erstellen.
  2. Klicken Sie auf Modell wechseln und wählen Sie im Menü gemini-2.5-flash-image aus.
  3. Wählen Sie im Bereich Ausgaben im Drop-down-Menü die Option Bild und Text aus.
  4. Geben Sie im Textbereich Prompt schreiben eine Beschreibung des Bildes ein, das Sie generieren möchten. Zum Beispiel: „Generiere ein Foto von einem typischen Frühstück.“
  5. Klicken Sie auf die Schaltfläche Prompt ().

Gemini generiert eine Antwort basierend auf Ihrer Beschreibung. Dieser Vorgang sollte einige Sekunden dauern, kann aber je nach Kapazität vergleichsweise langsam sein.

Python

Installieren

pip install --upgrade google-genai

Weitere Informationen finden Sie in der SDK-Referenzdokumentation.

Umgebungsvariablen für die Verwendung des Gen AI SDK mit Vertex AI festlegen:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

from google import genai
from google.genai.types import GenerateContentConfig, Modality
from PIL import Image
from io import BytesIO

client = genai.Client()

response = client.models.generate_content(
    model="gemini-2.5-flash-image",
    contents=("Generate a photo of a breakfast meal."),
    config=GenerateContentConfig(response_modalities=[Modality.TEXT, Modality.IMAGE]),
)
for part in response.candidates[0].content.parts:
    if part.text:
        print(part.text)
    elif part.inline_data:
        image = Image.open(BytesIO((part.inline_data.data)))
        image.save("output_folder/example-breakfast-meal.png")
# Example response:
#   Generates a photo of a vibrant and appetizing breakfast meal.
#   The scene will feature a white plate with golden-brown pancakes
#   stacked neatly, drizzled with rich maple syrup and ...

Java

Informationen zum Installieren oder Aktualisieren von Java

Weitere Informationen finden Sie in der SDK-Referenzdokumentation.

Umgebungsvariablen für die Verwendung des Gen AI SDK mit Vertex AI festlegen:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True


import com.google.genai.Client;
import com.google.genai.types.Blob;
import com.google.genai.types.Candidate;
import com.google.genai.types.Content;
import com.google.genai.types.GenerateContentConfig;
import com.google.genai.types.GenerateContentResponse;
import com.google.genai.types.Part;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.imageio.ImageIO;

public class ImageGenMmFlashLocaleAwareWithText {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String modelId = "gemini-2.5-flash-image";
    String outputFile = "resources/output/example-breakfast-meal.png";
    generateContent(modelId, outputFile);
  }

  // Generates an image with text input
  public static void generateContent(String modelId, String outputFile) throws IOException {
    // Client Initialization. Once created, it can be reused for multiple requests.
    try (Client client = Client.builder().location("global").vertexAI(true).build()) {

      GenerateContentResponse response =
          client.models.generateContent(
              modelId,
              "Generate a photo of a breakfast meal.",
              GenerateContentConfig.builder().responseModalities("TEXT", "IMAGE").build());

      // Get parts of the response
      List<Part> parts =
          response
              .candidates()
              .flatMap(candidates -> candidates.stream().findFirst())
              .flatMap(Candidate::content)
              .flatMap(Content::parts)
              .orElse(new ArrayList<>());

      // For each part print text if present, otherwise read image data if present and
      // write it to the output file
      for (Part part : parts) {
        if (part.text().isPresent()) {
          System.out.println(part.text().get());
        } else if (part.inlineData().flatMap(Blob::data).isPresent()) {
          BufferedImage image =
              ImageIO.read(new ByteArrayInputStream(part.inlineData().flatMap(Blob::data).get()));
          ImageIO.write(image, "png", new File(outputFile));
        }
      }

      System.out.println("Content written to: " + outputFile);

      // Example response:
      // Here is a photo of a breakfast meal for you!
      //
      // Content written to: resources/output/example-breakfast-meal.png
    }
  }
}

REST

Führen Sie den folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${API_ENDPOINT}:generateContent \
  -d '{
    "contents": {
      "role": "USER",
      "parts": { "text": "Generate a photo of a typical breakfast."},
    },
    "generation_config": {
      "response_modalities": ["TEXT", "IMAGE"],
      "image_config": {
        "aspect_ratio": "16:9",
      },
    },
    "safetySettings": {
      "method": "PROBABILITY",
      "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
      "threshold": "BLOCK_MEDIUM_AND_ABOVE"
    },
  }' 2>/dev/null >response.json

Gemini generiert ein Bild basierend auf Ihrer Beschreibung. Dieser Vorgang sollte einige Sekunden dauern, kann aber je nach Kapazität vergleichsweise langsam sein.