Zum Hauptinhalt springen
Lektion 9 von 12 · Bildgenerierung über die API: GPT Image

Erweiterte visuelle Prompts: Komposition, Beleuchtung, Perspektive

Lektion 9 von 12 Aktualisiert am 2. November 2026 Entwickler
Auf dieser Seite
  1. Erweiterte visuelle Prompts: Komposition, Beleuchtung, Perspektive
  2. Anatomie eines professionellen visuellen Prompts
  3. Beherrschung der Komposition
  4. Beherrschung der Beleuchtung
  5. Beherrschung der Perspektive
  6. Ein wiederverwendbarer Prompt-Baukasten

Update vom 2. November 2026 — Bildmodelle. Das Modell gpt-image-1, für das dieser Kurs ursprünglich geschrieben wurde, wurde am 23. Oktober 2026 eingestellt. gpt-image-1.5, gpt-image-1-mini und chatgpt-image-latest werden am 1. Dezember 2026 eingestellt. Die Beispiele verwenden nun gpt-image-2.5-sunburst, das präziseste Modell für Bearbeitungen; gpt-image-2.5-flare ist für die Standardgenerierung schneller. Beide unterstützen die Qualitätsstufen xhigh und max. GPT-Bildmodelle geben Bilder immer im Base64-Format zurück: Der Parameter response_format von älteren DALL·E-Modellen wird nicht akzeptiert und aus dem Code entfernt. Quelle: Bildgenerierung (OpenAI).

Erweiterte visuelle Prompts: Komposition, Beleuchtung, Perspektive

Ein gut strukturierter Prompt ist das, was ein durchschnittliches Bild von einem Bild professioneller Qualität unterscheidet. Der Hebel ist nicht die Länge, sondern das Vokabular. GPT Image versteht die Terminologie der Fotografie, des Kinos und der visuellen Künste. Diese Sprache zu sprechen ist wie dem Kameramann Anweisungen zu geben, statt nur einen Wunsch zu äußern. Diese Lektion lehrt Sie dieses Vokabular und wie man es organisiert.

Anatomie eines professionellen visuellen Prompts

Ein fortgeschrittener Prompt gliedert sich in Ebenen, die jeweils eine spezifische Frage beantworten: Wer oder was, wie angeordnet, wie beleuchtet, aus welcher Perspektive, in welchem Register, mit welchen optischen Eigenschaften. Wenn Sie diese Ebenen im Prompt-Text explizit benennen – „Subject: … Composition: … Lighting: … ” – hilft dies dem Modell, Register zu vermischen. Das folgende Beispiel beschreibt einen Architekten in seinem Atelier: Das Sujet nimmt gemäß der Drittelregel den linken Drittel ein, das Licht kommt seitlich von großen Fenstern, die Kamera ist leicht aus einem niedrigen Winkel mit einer Brennweite von 35mm, das Register ist warme, desaturierte dokumentarische Editorial-Fotografie, und die Schärfentiefe lässt den Hintergrund in einem leichten Bokeh. Jede dieser sechs Sätze nimmt eine Freiheit, die das Modell sonst willkürlich ausüben würde.

from openai import OpenAI
import base64

client = OpenAI()

def prompt_multicouche(
    sujet: str,
    composition: str,
    eclairage: str,
    perspective: str,
    style: str,
    details_techniques: str,
    output: str
):
    """Erstellt einen mehrschichtigen Prompt für maximale Kontrolle."""
    prompt = (
        f"Subject: {sujet}. "
        f"Composition: {composition}. "
        f"Lighting: {eclairage}. "
        f"Perspective: {perspective}. "
        f"Style: {style}. "
        f"Technical details: {details_techniques}."
    )

    response = client.images.generate(
        model="gpt-image-2.5-sunburst",
        prompt=prompt,
        size="1536x1024",
        quality="high",
    )

    data = base64.b64decode(response.data[0].b64_json)
    with open(output, "wb") as f:
        f.write(data)
    print(f"Advanced image: {output}")
    return prompt


prompt_utilise = prompt_multicouche(
    sujet="Architect working on blueprints in a bright studio",
    composition="Rule of thirds, subject at left third, depth with multiple planes",
    eclairage="Lateral natural light from large windows, soft shadows",
    perspective="Slightly low angle (subtle low-angle shot), 35mm focal length",
    style="Editorial documentary photography, warm desaturated tones",
    details_techniques="Medium depth of field, sharp foreground, light background bokeh",
    output="architecte_atelier.png"
)

Beherrschung der Komposition

Die Komposition bestimmt, wie das Auge durch ein Bild wandert, und Sie steuern sie, indem Sie Regeln benennen, die das Modell erkennt.

Klassische Kompositionsregeln

Der folgende Wörterbuch-Eintrag fasst fünf große Kompositionsfamilien zusammen und wendet sie auf ein absichtlich identisches Sujet an – einen isolierten Leuchtturm auf einer bretonischen Klippe –, sodass sich der Vergleich ausschließlich auf die Inszenierung konzentriert. Die Drittelregel platziert den Leuchtturm an einem Schnittpunkt der Kraftlinien und erzeugt das „natürlichste” Bild; die Symmetrie nach Wes Anderson zentriert die vertikale Achse und fügt eine Spiegelung im Wasser hinzu; die Diagonale erzeugt Spannung von der unteren linken Ecke zur oberen rechten Ecke; der Rahmen im Rahmen lässt Sie den Leuchtturm durch einen Bogen oder ein Fenster betrachten und erzeugt sofortige Tiefe; schließlich reduziert die minimalistische Komposition den Leuchtturm auf einen winzigen Punkt in einem weiten negativen Raum und verwandelt das Sujet in einen Vorwand. Fünf Bilder desselben Leuchtturms, fünf verschiedene Aussagen.

from openai import OpenAI
import base64

client = OpenAI()

compositions = {
    "regle_des_tiers": (
        "Rule of thirds composition, subject positioned at the intersection "
        "of power lines (right third, bottom third)"
    ),
    "symetrie": (
        "Perfectly symmetrical composition, central vertical axis, "
        "reflections in water, Wes Anderson style"
    ),
    "diagonale": (
        "Dynamic diagonal composition, power line from "
        "bottom-left corner to top-right corner"
    ),
    "cadre_dans_cadre": (
        "Frame within a frame: subject viewed through an arch, "
        "a window, or a natural framing"
    ),
    "minimaliste": (
        "Minimalist composition, huge negative space, "
        "small isolated subject in a vast environment"
    ),
}

sujet_base = "An isolated lighthouse on a Breton cliff facing the sea"

for nom, composition in compositions.items():
    prompt = f"{sujet_base}, {composition}, landscape photography"

    response = client.images.generate(
        model="gpt-image-2.5-sunburst",
        prompt=prompt,
        size="1536x1024",
        quality="high",
    )

    path = f"composition_{nom}.png"
    data = base64.b64decode(response.data[0].b64_json)
    with open(path, "wb") as f:
        f.write(data)
    print(f"Composition {nom} → {path}")

Ebenen und Tiefe

Tiefe wird nicht in Masse angefordert, sondern Ebene für Ebene aufgebaut. Der folgende Prompt beschreibt einen provenzalischen Markt, indem er Inhalt und Schärfe für jede der drei Ebenen explizit zuweist: Seifen und Lavendel im Vordergrund, scharf; der Händler und sein Kunde im Mittelgrund, leicht unscharf; goldene Steinfassaden und Platane im Hintergrund, mit ausgeprägtem Bokeh. Die abschließende Erwähnung einer 50mm-Objektivöffnung bei f/1.8 bestätigt optisch lediglich, was die Beschreibung bereits festgelegt hat – und es ist diese absichtliche Redundanz, die das Ergebnis zuverlässig macht.

from openai import OpenAI
import base64

client = OpenAI()

prompt_profondeur = (
    "Provençal market scene with three distinct planes: "
    "sharp foreground—display of lavender and artisanal soaps, "
    "middle ground—vendor and customer in conversation, slight blur, "
    "background—golden stone facades and plane trees, pronounced bokeh. "
    "Photography with 50mm f/1.8 lens, shallow depth of field."
)

response = client.images.generate(
    model="gpt-image-2.5-sunburst",
    prompt=prompt_profondeur,
    size="1536x1024",
    quality="high",
)

data = base64.b64decode(response.data[0].b64_json)
with open("marche_profondeur.png", "wb") as f:
    f.write(data)

Beherrschung der Beleuchtung

Beleuchtung ist das mächtigste Werkzeug zur Schaffung von Atmosphäre und das kosteneffizienteste in Bezug auf investierte Zeichen. Sechs Aufbauten decken die meisten Bedürfnisse ab, und der folgende Loop wendet sie alle auf dasselbe Porträt eines fokussierten Geigers an. Rembrandt-Beleuchtung mit ihrer einzelnen Lichtquelle bei 45 Grad und ihrem dreieckigen Lichtfleck auf der gegenüberliegenden Wange gibt das klassische Studioporträt. Rim-Licht platziert die Quelle hinter dem Sujet und behält nur den Kontur-Halo bei, wodurch ein Silhouettenbild entsteht. Split-Beleuchtung teilt das Gesicht in zwei Hälften, eine beleuchtet, die andere im Schatten, und verschiebt sich sofort in einen kinematografischen Register. Golden Hour bringt streifendes goldenes Licht und seinen nostalgischen Objektivflare, urbanes Neon bringt rosa und cyanfarbene Quellen, die auf nassen Oberflächen reflektiert werden, und High-Key-Studio bringt schattenlose Einheitlichkeit und einen kommerziellen weißen Hintergrund. Das gleiche Sujet wird nacheinander intim, mysteriös oder werbereif.

from openai import OpenAI
import base64

client = OpenAI()

eclairages_avances = {
    "rembrandt": (
        "Rembrandt lighting: single source at 45 degrees, triangular highlight "
        "on opposite cheek, deep dramatic shadows"
    ),
    "rim_light": (
        "Backlighting (rim light): silhouette outlined by a luminous halo, "
        "source directly behind subject, details in shadows"
    ),
    "split": (
        "Split lighting: half face lit, half in shadow, "
        "clear separation, mysterious cinematic atmosphere"
    ),
    "golden_hour": (
        "Golden hour: raking golden light, long warm shadows, "
        "subtle lens flare, soft nostalgic atmosphere"
    ),
    "neon": (
        "Urban neon lighting: multiple pink and cyan sources, "
        "reflections on wet surfaces, nocturnal cyberpunk atmosphere"
    ),
    "studio_high_key": (
        "High-key studio: uniformly bright lighting, minimal shadows, "
        "white background, clean commercial atmosphere"
    ),
}

sujet = "Portrait of a focused violinist"

for nom, eclairage in eclairages_avances.items():
    prompt = f"{sujet}, {eclairage}"

    response = client.images.generate(
        model="gpt-image-2.5-sunburst",
        prompt=prompt,
        size="1024x1536",
        quality="high",
    )

    path = f"eclairage_{nom}.png"
    data = base64.b64decode(response.data[0].b64_json)
    with open(path, "wb") as f:
        f.write(data)
    print(f"Lighting {nom} → {path}")

Beherrschung der Perspektive

Perspektive beeinflusst, wie der Betrachter das Sujet wahrnimmt, und ihre Wirkung ist fast immer psychologisch, bevor sie ästhetisch ist. Ein hoher Winkel schaut auf die Szene herab und mindert das, was er betrachtet; ein niedriger Winkel, Kamera auf Bodenhöhe, vergrößert das Sujet und verleiht ihm Macht; eine perfekt vertikale Luftaufnahme beseitigt das Volumen und verwandelt die Realität in ein grafisches Muster; eine Wurmloch-Perspektive treibt den niedrigen Winkel ins Extreme, sodass sich alle Fluchtpunkte zum Himmel hin konvergieren; schließlich reproduziert eine Augenhöhe-Perspektive mit einer Brennweite von 50mm das menschliche Sehen und verschwindet zugunsten des Sujets. Bei Glas- und Stahl-Skratzhimmeln liegt der Unterschied zwischen diesen fünf Bildern nicht im Gebäude selbst, sondern in der Beziehung, die sie zu ihm herstellen. Beachten Sie, dass der Loop für die beiden niedrigen Winkel auf Hochformat umschaltet, da ein Gebäude aus niedriger Perspektive Höhe zum Atmen benötigt.

from openai import OpenAI
import base64

client = OpenAI()

perspectives = {
    "plongee": (
        "High-angle view (top-down), camera overlooking the scene, "
        "domination effect, subject viewed from above at 45 degrees"
    ),
    "contre_plongee": (
        "Low-angle view (bottom-up), camera at ground level looking up, "
        "effect of grandeur and power"
    ),
    "aerienne": (
        "Drone aerial view, perfectly vertical (90 degrees), "
        "graphic composition, textures and patterns visible from above"
    ),
    "worm_eye": (
        "Worm's-eye view, camera placed on ground, extreme perspective "
        "with vanishing lines converging toward the sky"
    ),
    "eye_level": (
        "Eye-level view, natural and immersive, "
        "50mm focal length, like human vision"
    ),
}

sujet = "Modern glass and steel skyscrapers"

for nom, perspective in perspectives.items():
    prompt = f"{sujet}, {perspective}, architectural photography"

    response = client.images.generate(
        model="gpt-image-2.5-sunburst",
        prompt=prompt,
        size="1024x1536" if nom in ["contre_plongee", "worm_eye"] else "1536x1024",
        quality="high",
    )

    path = f"perspective_{nom}.png"
    data = base64.b64decode(response.data[0].b64_json)
    with open(path, "wb") as f:
        f.write(data)
    print(f"Perspective {nom} → {path}")

Ein wiederverwendbarer Prompt-Baukasten

Wenn Sie in jedem Skript manuell sieben Ebenen aneinanderreihen, werden Sie früher oder später eine vergessen oder zwei vertauschen. Die PromptBuilder-Klasse löst dies, indem sie pro Ebene eine Methode bereitstellt und bei jedem Aufruf self zurückgibt, sodass Sie Einstellungen in einer lesbaren Reihenfolge verkettend angeben und nur einige davon angeben können. Die build()-Methode montiert dann das Sujet und die besetzten Ebenen zu Text zusammen, der bereit für client.images.generate() ist. Das Beispiel des Strandcafés implementiert alle sieben verfügbaren Ebenen – Komposition, Beleuchtung, Perspektive, Stil, Farben, Atmosphäre, Technik – und erzeugt einen Prompt, den keine Improvisation so vollständig machen würde.

class PromptBuilder:
    """Baukasten für strukturierte visuelle Prompts."""

    def __init__(self, sujet: str):
        self.sujet = sujet
        self.layers = {}

    def composition(self, desc: str):
        self.layers["composition"] = desc
        return self

    def eclairage(self, desc: str):
        self.layers["lighting"] = desc
        return self

    def perspective(self, desc: str):
        self.layers["perspective"] = desc
        return self

    def style(self, desc: str):
        self.layers["style"] = desc
        return self

    def couleurs(self, desc: str):
        self.layers["color palette"] = desc
        return self

    def atmosphere(self, desc: str):
        self.layers["atmosphere"] = desc
        return self

    def technique(self, desc: str):
        self.layers["technique"] = desc
        return self

    def build(self) -> str:
        parts = [self.sujet]
        for key, value in self.layers.items():
            parts.append(f"{key}: {value}")
        return ". ".join(parts)


# Usage
prompt = (
    PromptBuilder("Artisanal seaside café, terrace with umbrellas")
    .composition("Rule of thirds, terrace in foreground, sea at horizon")
    .eclairage("Late afternoon, raking golden light, long shadows")
    .perspective("Slight high angle, 28mm wide-angle focal length")
    .style("Lifestyle photography, warm tones, analog film")
    .couleurs("Terracotta, Mediterranean blue, off-white, olive green")
    .atmosphere("Relaxed and Mediterranean, sea breeze")
    .technique("Deep depth of field, sharp from foreground to infinity")
    .build()
)

print(prompt)
# Use this prompt with client.images.generate()

Nehmen Sie nun die Verantwortung für dieses Werkzeugset auf einem einzigen anspruchsvollen Sujet an: eine alte Bibliothek. Erstellen Sie fünf Bilder mit dem PromptBuilder, indem Sie systematisch Komposition, Beleuchtung und Perspektive variieren, und sammeln Sie sie in einem HTML-Katalog. Erst wenn Sie die fünf nebeneinander sehen, werden Sie lernen, welche dieser Ebenen in Ihrer Praxis am wichtigsten sind.