Zum Hauptinhalt springen
Dieser Leitfaden zeigt, wie du Gemini-Bildmodelle über CometAPI mit dem Google Gen AI SDK verwendest. Er behandelt:
  • Text-zu-Bild-Generierung
  • Bild-zu-Bild-Bearbeitung
  • Komposition aus mehreren Bildern
  • Generierte Bilder speichern
  • Base URL: https://api.cometapi.com
  • SDK installieren: pip install google-genai (Python) oder npm install @google/genai (Node.js)

Setup

Initialisiere den Client mit der Base URL von CometAPI:
from google import genai
from google.genai import types
import os

COMETAPI_KEY = os.environ.get("COMETAPI_KEY") or "<YOUR_COMETAPI_KEY>"

client = genai.Client(
    http_options={"api_version": "v1beta", "base_url": "https://api.cometapi.com"},
    api_key=COMETAPI_KEY,
)

Text-to-image-Generierung

Erzeugen Sie ein Bild aus einem Text-Prompt und speichern Sie es in einer Datei.
from google import genai
from google.genai import types
from PIL import Image
import os

client = genai.Client(
    http_options={"api_version": "v1beta", "base_url": "https://api.cometapi.com"},
    api_key=os.environ.get("COMETAPI_KEY"),
)

response = client.models.generate_content(
    model="gemini-3.1-flash-image-preview",
    contents="Create a picture of a nano banana dish in a fancy restaurant with a Gemini theme",
    config=types.GenerateContentConfig(
        response_modalities=["TEXT", "IMAGE"],
    ),
)

for part in response.parts:
    if part.text is not None:
        print(part.text)
    elif part.inline_data is not None:
        image = part.as_image()
        image.save("generated_image.png")
        print("Image saved to generated_image.png")
Antwortstruktur: Die Bilddaten befinden sich in candidates[0].content.parts, die Text- und/oder Bildteile enthalten können:
{
  "candidates": [{
    "content": {
      "parts": [
        { "text": "Here is your image..." },
        {
          "inlineData": {
            "mimeType": "image/png",
            "data": "<base64-encoded-image>"
          }
        }
      ]
    }
  }]
}

Bild-zu-Bild-Generierung

Laden Sie ein Eingabebild hoch und transformieren Sie es mit einem Text-Prompt.
from google import genai
from google.genai import types
from PIL import Image
import os

client = genai.Client(
    http_options={"api_version": "v1beta", "base_url": "https://api.cometapi.com"},
    api_key=os.environ.get("COMETAPI_KEY"),
)

# Load the source image
source_image = Image.open("source.jpg")

response = client.models.generate_content(
    model="gemini-3.1-flash-image-preview",
    contents=["Transform this into a watercolor painting", source_image],
    config=types.GenerateContentConfig(
        response_modalities=["TEXT", "IMAGE"],
    ),
)

for part in response.parts:
    if part.text is not None:
        print(part.text)
    elif part.inline_data is not None:
        image = part.as_image()
        image.save("watercolor_output.png")
  • Das Python SDK akzeptiert PIL.Image-Objekte direkt — keine manuelle Base64-Kodierung erforderlich.
  • Fügen Sie nicht das Präfix data:image/jpeg;base64, ein, wenn Sie rohe Base64-Strings übergeben.

Multi-image-Komposition

Erstellen Sie ein neues Bild aus mehreren Eingabebildern. CometAPI unterstützt zwei Ansätze:

Methode 1: Einzelnes Collage-Bild

Kombinieren Sie mehrere Quellbilder zu einer Collage und beschreiben Sie dann die gewünschte Ausgabe.
Beispiel für Eingabecollage
Generierte Ausgabe
from google import genai
from google.genai import types
from PIL import Image
import os

client = genai.Client(
    http_options={"api_version": "v1beta", "base_url": "https://api.cometapi.com"},
    api_key=os.environ.get("COMETAPI_KEY"),
)

collage = Image.open("collage.jpg")

response = client.models.generate_content(
    model="gemini-3.1-flash-image-preview",
    contents=[
        "A model is posing and leaning against a pink BMW with a green alien keychain attached to a pink handbag, a pink parrot on her shoulder, and a pug wearing a pink collar and gold headphones",
        collage,
    ],
    config=types.GenerateContentConfig(
        response_modalities=["TEXT", "IMAGE"],
    ),
)

for part in response.parts:
    if part.inline_data is not None:
        part.as_image().save("composition_output.png")

Methode 2: Mehrere separate Bilder (bis zu 14)

Übergeben Sie mehrere Bilder direkt. Gemini 3-Modelle unterstützen bis zu 14 Referenzbilder (Objekte + Charaktere):
from google import genai
from google.genai import types
from PIL import Image
import os

client = genai.Client(
    http_options={"api_version": "v1beta", "base_url": "https://api.cometapi.com"},
    api_key=os.environ.get("COMETAPI_KEY"),
)

image1 = Image.open("image1.jpg")
image2 = Image.open("image2.jpg")
image3 = Image.open("image3.jpg")

response = client.models.generate_content(
    model="gemini-3.1-flash-image-preview",
    contents=["Merge the three images", image1, image2, image3],
    config=types.GenerateContentConfig(
        response_modalities=["TEXT", "IMAGE"],
    ),
)

for part in response.parts:
    if part.inline_data is not None:
        part.as_image().save("merged_output.png")
Ergebnis der Multi-Image-Generierung

4K-Bildgenerierung

Geben Sie image_config mit aspect_ratio und image_size für eine hochauflösende Ausgabe an:
from google import genai
from google.genai import types
import os

client = genai.Client(
    http_options={"api_version": "v1beta", "base_url": "https://api.cometapi.com"},
    api_key=os.environ.get("COMETAPI_KEY"),
)

response = client.models.generate_content(
    model="gemini-3.1-flash-image-preview",
    contents="Da Vinci style anatomical sketch of a Monarch butterfly on textured parchment",
    config=types.GenerateContentConfig(
        response_modalities=["TEXT", "IMAGE"],
        image_config=types.ImageConfig(
            aspect_ratio="1:1",
            image_size="4K",
        ),
    ),
)

for part in response.parts:
    if part.text is not None:
        print(part.text)
    elif image := part.as_image():
        image.save("butterfly_4k.png")

Multi-turn-Bildbearbeitung (Chat)

Verwenden Sie die Chat-Funktion des SDK, um Bilder iterativ zu verfeinern:
from google import genai
from google.genai import types
import os

client = genai.Client(
    http_options={"api_version": "v1beta", "base_url": "https://api.cometapi.com"},
    api_key=os.environ.get("COMETAPI_KEY"),
)

chat = client.chats.create(
    model="gemini-3.1-flash-image-preview",
    config=types.GenerateContentConfig(
        response_modalities=["TEXT", "IMAGE"],
    ),
)

## First turn: Generate
response = chat.send_message(
    "Create a vibrant infographic explaining photosynthesis as a recipe, styled like a colorful kids cookbook"
)

for part in response.parts:
    if part.text is not None:
        print(part.text)
    elif image := part.as_image():
        image.save("photosynthesis.png")

Tipps

Gib Stil-Keywords an (z. B. „cyberpunk, film grain, low contrast“), Seitenverhältnis, Motiv, Hintergrund, Beleuchtung und Detailgrad.
Wenn du rohes HTTP verwendest, füge nicht das Präfix data:image/png;base64, hinzu — verwende nur den rohen Base64-String. Das Python SDK übernimmt dies mit PIL.Image-Objekten automatisch.
Setze "responseModalities" nur auf ["IMAGE"], um eine Bildausgabe ohne Text zu garantieren.
Weitere Details findest du in der API Reference. Offizielle Dokumentation: Gemini Image Generation