Naar hoofdinhoud gaan
Deze handleiding laat zien hoe je Gemini-afbeeldingsmodellen via CometAPI gebruikt met de Google Gen AI SDK. De volgende onderwerpen komen aan bod:
  • Text-to-image generatie
  • Image-to-image bewerking
  • Compositie met meerdere afbeeldingen
  • Gegenereerde afbeeldingen opslaan
  • Base URL: https://api.cometapi.com
  • Installeer de SDK: pip install google-genai (Python) of npm install @google/genai (Node.js)

Setup

Initialiseer de client met de base URL van 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,
)

Tekst-naar-afbeelding genereren

Genereer een afbeelding uit een tekst Prompt en sla deze op in een bestand.
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")
Responsestructuur: De afbeeldingsdata staat in candidates[0].content.parts, die tekst- en/of afbeeldingsonderdelen kan bevatten:
{
  "candidates": [{
    "content": {
      "parts": [
        { "text": "Here is your image..." },
        {
          "inlineData": {
            "mimeType": "image/png",
            "data": "<base64-encoded-image>"
          }
        }
      ]
    }
  }]
}

Image-to-image generatie

Upload een invoerafbeelding en transformeer die met een tekstprompt.
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")
  • De Python SDK accepteert PIL.Image-objecten direct — handmatige Base64-codering is niet nodig.
  • Voeg het voorvoegsel data:image/jpeg;base64, niet toe wanneer je ruwe Base64-strings doorgeeft.

Compositie met meerdere afbeeldingen

Genereer een nieuwe afbeelding uit meerdere invoerafbeeldingen. CometAPI ondersteunt twee benaderingen:

Methode 1: Eén collage-afbeelding

Combineer meerdere bronafbeeldingen in één collage en beschrijf vervolgens de gewenste output.
Voorbeeld van invoercollage
Gegenereerde output
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: Meerdere afzonderlijke afbeeldingen (tot 14)

Geef meerdere afbeeldingen direct door. Gemini 3-modellen ondersteunen tot 14 referentieafbeeldingen (objecten + personages):
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")
Resultaat van generatie met meerdere afbeeldingen

4K-afbeeldingsgeneratie

Specificeer image_config met aspect_ratio en image_size voor output met hoge resolutie:
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")

Meerdere beurten voor afbeeldingsbewerking (chat)

Gebruik de chatfunctie van de SDK om afbeeldingen iteratief te verfijnen:
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")

Tips

Specificeer stijlzoekwoorden (bijv. “cyberpunk, film grain, low contrast”), beeldverhouding, onderwerp, achtergrond, belichting en detailniveau.
Wanneer je raw HTTP gebruikt, voeg dan niet het voorvoegsel data:image/png;base64, toe — gebruik alleen de ruwe Base64-string. De Python SDK verwerkt dit automatisch met PIL.Image-objecten.
Stel "responseModalities" alleen in op ["IMAGE"] om afbeeldingsuitvoer zonder tekst te garanderen.
Zie de API Reference voor meer informatie. Officiële documentatie: Gemini Image Generation