> ## Documentation Index
> Fetch the complete documentation index at: https://docs.venice.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Bilder mit transparentem Hintergrund

> PNG- oder WebP-Bilder mit echtem Alphakanal generieren und bearbeiten – per transparent_background auf /image/generate, /image/edit und /image/multi-edit oder per background: transparent auf dem OpenAI-kompatiblen Endpoint.

Die Image-API von Venice kann Bilder mit echtem Alphakanal zurückgeben, statt eines aufgemalten weißen oder karierten Hintergrunds. Das Modell komponiert das Motiv von Anfang an mit Transparenz, sodass Kanten, Schatten und halbtransparente Bereiche (Glas, Haare, Rauch) einen Alpha-Wert pro Pixel tragen statt einer harten Maske.

Das unterscheidet sich von `/image/background-remove`, das ein fertiges, opakes Bild nimmt und den Vordergrund nachträglich segmentiert. Nutze native Transparenz, wenn du das Asset ohnehin generierst oder bearbeitest; nutze die Hintergrundentfernung, wenn du nur das opake Bild hast.

<Frame as="div" caption="Gleicher Prompt und Seed auf gpt-image-2-5-flare. Links: Standard-Output. Rechts: transparent_background: true, über einem Schachbrettmuster dargestellt. Der Schlagschatten bleibt als partielles Alpha erhalten.">
  <img src="https://mintcdn.com/veniceai/W3Pe6eTTsq9YXpsg/images/guides/transparent-backgrounds/before-after.webp?fit=max&auto=format&n=W3Pe6eTTsq9YXpsg&q=85&s=c9be8661231052a405dc949687f9f5ee" alt="Nebeneinander: ein Glas Eistee vor einem opaken Studiohintergrund im Vergleich zum selben Glas auf transparentem Hintergrund über einem Schachbrettmuster" width="1192" height="518" data-path="images/guides/transparent-backgrounds/before-after.webp" />
</Frame>

## Was du brauchst

| Voraussetzung | Detail |
| - | - |
| Modell | Eines mit `supportsTransparentBackground: true` in den Constraints von `GET /models`. Aktuell `gpt-image-1-5`, `gpt-image-2-5-flare` und `gpt-image-2-5-sunburst` (plus ihre `-edit`-Varianten für die Edit-Endpoints) |
| Ausgabeformat | `png` oder `webp`. JPEG hat keinen Alphakanal, daher wird `jpeg` abgelehnt |
| Parameter | `transparent_background: true` auf `/image/generate`, `/image/edit`, `/image/multi-edit`. `background: "transparent"` auf `/images/generations` |

Alles andere liefert `400`, bevor die Inferenz läuft – abgelehnte Requests werden dir also nicht berechnet.

## Schritt 1: Ein transparentes Bild generieren

`/image/generate` ist der native Endpoint. Setze `format` auf `png` oder `webp` und `transparent_background` auf `true`.

```bash theme={"system"}
curl https://api.venice.ai/api/v1/image/generate \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -o sticker.png \
  -d '{
    "model": "gpt-image-2-5-flare",
    "prompt": "A die-cut sticker of a cartoon rocket ship, bold outlines, flat colors, no background",
    "format": "png",
    "transparent_background": true,
    "quality": "low",
    "return_binary": true
  }'
```

Die Antwort hat `content-type: image/png` mit einem RGBA-Pixel-Layout. Ohne `return_binary` erhältst du den üblichen JSON-Envelope mit einem Base64-String in `images[0]`.

`format` ist standardmäßig `webp`, was ebenfalls Alpha unterstützt – du kannst `format` also weglassen. Nur ein explizites `"format": "jpeg"` schlägt fehl.

<Tip>
  Schreib zusätzlich zum Flag auch „no background" oder „isolated on transparent background" in den Prompt. Das Flag garantiert einen Alphakanal; der Prompt hält das Modell davon ab, einen Boden, Tisch oder Hintergrund zu zeichnen, der innerhalb der Bounding Box des Motivs opak bleiben würde.
</Tip>

## Schritt 2: Den Alphakanal prüfen

Verlass dich nicht auf die Dateiendung. Prüfe den Pixelmodus und sieh dir die Alpha-Verteilung an, um sicherzustellen, dass der Hintergrund tatsächlich transparent ist und keine abgeflachte weiße Füllung.

```python theme={"system"}
from PIL import Image

im = Image.open("sticker.png")
print(im.format, im.mode, im.size)  # PNG RGBA (1024, 1024)

alpha = im.getchannel("A")
hist = alpha.histogram()
total = sum(hist)
print(f"fully transparent: {100 * hist[0] / total:.1f}%")
print(f"partially transparent: {100 * sum(hist[1:255]) / total:.1f}%")
print("subject bbox:", alpha.getbbox())
```

Ein korrektes Ergebnis hat einen großen Anteil an Pixeln mit Alpha `0` (der Hintergrund), einen Streifen partieller Werte entlang der Kanten (Anti-Aliasing und weiche Schatten) und eine Bounding Box des Motivs, die kleiner als die Leinwand ist. Ist `im.mode` gleich `RGB` oder liegt der transparente Anteil bei `0%`, ist der Alphakanal irgendwo in deiner Pipeline verloren gegangen – meist durch einen Resize- oder Re-Encode-Schritt, der ihn verworfen hat.

<Frame as="div" caption="Der Alphakanal des obigen Bildes, isoliert. Der Schatten unter dem Glas läuft über Dutzende Graustufen aus, statt abrupt von Weiß zu Schwarz zu springen – genau das willst du für das Compositing auf beliebige Hintergründe.">
  <img src="https://mintcdn.com/veniceai/W3Pe6eTTsq9YXpsg/images/guides/transparent-backgrounds/alpha-channel.webp?fit=max&auto=format&n=W3Pe6eTTsq9YXpsg&q=85&s=e58c7a0a0d4e6aebb06a0341871731c5" alt="Drei Panels: das transparente Bild über einem Schachbrettmuster, sein Alphakanal als Graustufenmaske und ein vergrößerter Ausschnitt der Schattenkante mit weichem Verlauf" width="1776" height="607" data-path="images/guides/transparent-backgrounds/alpha-channel.webp" />
</Frame>

<Note>
  Die GPT-Image-Modelle liefern den opaken Bereich aktuell mit Alpha `252`–`254` statt `255`. Visuell ist das nicht zu unterscheiden, aber wenn du auf `== 255` thresholdest, um das Motiv zu finden, erhältst du eine leere Maske. Nutze stattdessen `> 0` oder `>= 250` als Schwellenwert.
</Note>

## Schritt 3: Den OpenAI-kompatiblen Endpoint nutzen

Wenn du bereits das OpenAI SDK verwendest, akzeptiert `/images/generations` denselben `background`-Parameter wie OpenAI. Setze ihn auf `"transparent"` und wähle `png` oder `webp` als `output_format`.

```python theme={"system"}
import base64
from openai import OpenAI

client = OpenAI(
    base_url="https://api.venice.ai/api/v1",
    api_key=VENICE_API_KEY,
)

result = client.images.generate(
    model="gpt-image-2-5-flare",
    prompt="A flat vector icon of a paper airplane, isolated, no background",
    output_format="webp",
    background="transparent",
    quality="low",
)

with open("icon.webp", "wb") as f:
    f.write(base64.b64decode(result.data[0].b64_json))
```

`background` akzeptiert `transparent`, `opaque` oder `auto`. `opaque`, `auto` und `null` behalten alle das Standardverhalten des Modells bei – der einzige Wert, der etwas ändert, ist also `transparent`. `output_format` ist auf diesem Endpoint standardmäßig `png`, du kannst es also weglassen.

## Schritt 4: Mit Transparenz bearbeiten

Auch `/image/edit` und `/image/multi-edit` akzeptieren `transparent_background`. Das Quellbild muss nicht transparent sein; du kannst ein opakes Foto übergeben und das Modell bitten, das Motiv beim Bearbeiten freizustellen.

```bash theme={"system"}
curl https://api.venice.ai/api/v1/image/edit \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -F "model=gpt-image-2-5-flare-edit" \
  -F "prompt=Make the apple green and remove the background" \
  -F "image=@apple.jpg" \
  -F "transparent_background=true" \
  -o apple-green.png
```

Auf den Edit-Endpoints wird `output_format` bei Weglassen abgeleitet: normalerweise PNG für 1K-Edits und JPEG für 2K/4K. Ist `transparent_background` jedoch `true`, wird bei jeder Auflösung PNG abgeleitet. Du musst `output_format` also nur explizit senden, wenn du WebP willst.

Die Multi-Edit-Variante ist identisch, nur mit `images[]` statt `image`. Sie eignet sich ideal, um ein Produktfoto in eine neue Szene zu komponieren und das Ergebnis als Freisteller zurückzubekommen, den du in dein eigenes Layout einsetzen kannst.

## Preise

Transparenz kostet keinen Aufpreis. Du zahlst den normalen Preis pro Bild des Modells, der bei GPT Image 2.5 von `resolution` und `quality` abhängt. Eine `1K`-`low`-Generierung auf `gpt-image-2-5-flare` ist der günstigste Weg, an einem Sticker oder Icon zu iterieren, bevor du für `high` oder `4K` zahlst. Die aktuelle Preistabelle findest du unter [Image-Modelle](/de/models/image).

## Fehler

Die Validierung läuft, bevor das Modell aufgerufen wird. Beide Meldungen nennen die Lösung.

| Request | Status | Body |
| - | - | - |
| `transparent_background: true` mit `format` / `output_format` `jpeg` | `400` | `Transparent background requires png or webp output format.` |
| `transparent_background: true` auf einem Modell ohne das Flag | `400` | `Transparent background is not supported by model 'flux-2-pro'. Use a model with "supportsTransparentBackground": true in its constraints (see GET /api/v1/models).` |
| `background: "transparent"` mit `output_format: "jpeg"` auf `/images/generations` | `400` | `Transparent background requires png or webp output format.` |

`transparent_background: false` mit `jpeg` ist in Ordnung und liefert ein normales opakes JPEG.

## Unterstützte Modelle zur Laufzeit ermitteln

Modell-IDs ändern sich. Statt die obige Liste hart zu codieren, filtere `GET /models` nach dem Constraint-Flag. Der Key ist nur bei Modellen vorhanden, die es unterstützen, und dann `true`.

```bash theme={"system"}
curl -s "https://api.venice.ai/api/v1/models?type=image" \
  | jq -r '.data[] | select(.model_spec.constraints.supportsTransparentBackground == true) | .id'
```

Verwende `type=inpaint` für die Edit-Endpoints; damit erhältst du die `-edit`-Modell-IDs.

## Wann dies und wann `/image/background-remove`?

| | `transparent_background` | `/image/background-remove` |
| - | - | - |
| Input | Ein Prompt (und optional ein Quellbild zum Bearbeiten) | Ein bestehendes opakes Bild |
| Wie Alpha entsteht | Das Modell komponiert von Anfang an mit Transparenz | Ein Segmentierungsmodell maskiert den Vordergrund nachträglich |
| Schatten und Spiegelungen | Bleiben mit partiellem Alpha erhalten, weil das Modell sie als Teil des Motivs gerendert hat | Werden zusammen mit dem Hintergrund entfernt, da sie nicht zum Vordergrund gehören |
| Modellwahl | Nur GPT Image 1.5 / 2.5 | Festes internes Modell, kein `model`-Feld |
| Kosten | Normaler Generierungs- oder Edit-Preis des Modells | Pauschaler Preis für Hintergrundentfernung |

Wenn du das Asset ohnehin generierst, fordere Transparenz direkt an und spar dir den zweiten Aufruf. Greif zu `/image/background-remove`, wenn das opake Bild bereits existiert und du es nicht neu generieren willst.

<Frame as="div" caption="Ein transparenter Sticker aus dem Request in Schritt 1, ohne weitere Bearbeitung auf drei Hintergründe gelegt.">
  <img src="https://mintcdn.com/veniceai/W3Pe6eTTsq9YXpsg/images/guides/transparent-backgrounds/backgrounds.webp?fit=max&auto=format&n=W3Pe6eTTsq9YXpsg&q=85&s=4488165c3b98220102c945be301c64e1" alt="Derselbe Cartoon-Raketen-Sticker, komponiert über eine dunkle Vollfarbe, einen warmen Farbverlauf und ein Schachbrettmuster" width="1356" height="413" data-path="images/guides/transparent-backgrounds/backgrounds.webp" />
</Frame>

## Verwandte Themen

* [Bildgenerierung](/de/guides/media/image-generation) für Größen, Qualitätsstufen und die vollständige Parameterliste von `/image/generate`
* [Bildbearbeitung](/de/guides/media/image-editing) für `/image/edit`, `/image/multi-edit` und `/image/background-remove`
* [Image-Modelle](/de/models/image) für aktuelle Preise und Constraints


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.