Bilder mit Gemini bearbeiten

Gemini 2.5 Flash Image unterstützt verschiedene Arten der Bildbearbeitung.

Bildbearbeitung

Gemini 2.5 Flash Image für die Bildgenerierung (gemini-2.5-flash-image) unterstützt die Bearbeitung von Bildern zusätzlich zur Generierung. Gemini 2.5 Flash Image unterstützt die verbesserte Bearbeitung von Bildern und die Bearbeitung in mehreren Schritten. Außerdem enthält es aktualisierte Sicherheitsfilter, die eine flexiblere und weniger restriktive Nutzung ermöglichen.

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

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

    • Beispiel-Prompt: „Bearbeite dieses Bild so, dass es wie ein Cartoon aussieht.“
    • Beispiel-Prompt: [Bild einer Katze] + [Bild eines Kissens] + „Erstelle ein Kreuzstichmuster meiner Katze auf diesem Kissen.“
  • Bildbearbeitung mit mehreren Antworten (Chat)

    • Beispiel-Prompts: [Lade ein Bild eines blauen Autos hoch.] „Mach aus diesem Auto ein Cabrio.“ „Ändere die Farbe jetzt in Gelb.“ „Füge einen Spoiler hinzu.“

Bild bearbeiten

Console

So bearbeiten Sie Bilder:

  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. Klicken Sie auf Medien einfügen () und wählen Sie eine Quelle aus dem Menü aus. Folgen Sie dann der Anleitung im Dialogfeld.
  5. Geben Sie im Textbereich Prompt schreiben ein, welche Änderungen Sie am Bild vornehmen möchten.
  6. Klicken Sie auf die Schaltfläche Prompt ().

Gemini generiert anhand Ihrer Beschreibung eine bearbeitete Version des bereitgestellten Bildes. 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()

# Using an image of Eiffel tower, with fireworks in the background.
image = Image.open("test_resources/example-image-eiffel-tower.png")

response = client.models.generate_content(
    model="gemini-2.5-flash-image",
    contents=[image, "Edit this image to make it look like a cartoon."],
    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/bw-example-image.png")
# Example response:
#  Here's the cartoon-style edit of the image:
#  Cartoon-style edit:
#  - Simplified the Eiffel Tower with bolder lines and slightly exaggerated proportions.
#  - Brightened and saturated the colors of the sky, fireworks, and foliage for a more vibrant, cartoonish look.
#  ....

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.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import javax.imageio.ImageIO;

public class ImageGenMmFlashEditImageWithTextAndImage {

  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/bw-example-image.png";
    generateContent(modelId, outputFile);
  }

  // Edits an image with image and 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()) {

      byte[] localImageBytes =
          Files.readAllBytes(Paths.get("resources/example-image-eiffel-tower.png"));

      GenerateContentResponse response =
          client.models.generateContent(
              modelId,
              Content.fromParts(
                  Part.fromBytes(localImageBytes, "image/png"),
                  Part.fromText("Edit this image to make it look like a cartoon.")),
              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:
      // No problem! Here's the image in a cartoon style...
      //
      // Content written to: resources/output/bw-example-image.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": [
        {"file_data": {
          "mime_type": "image/jpg",
          "file_uri": "<var>FILE_NAME</var>"
          }
        },
        {"text": "Convert this photo to black and white, in a cartoonish style."},
      ]

    },
    "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.

Multi-Turn-Bildbearbeitung

Gemini 2.5 Flash Image unterstützt auch die verbesserte Multi-Turn-Bearbeitung. Sie können also auf das Modell mit Änderungen reagieren, nachdem Sie eine bearbeitete Bildantwort erhalten haben. So können Sie weiterhin Änderungen am Bild vornehmen.

Die Gesamtgröße der Anfragedatei sollte maximal 50 MB betragen.

Wenn Sie die Bildbearbeitung in mehreren Schritten ausprobieren möchten, können Sie unser Gemini 2.5 Flash Image-Notebook verwenden.