---
seo_title: SVG-zu-PNG-API: SVG-Bilder in PNG rastern | EnConvert
meta_desc: SVG per POST /v1/convert/svg-to-png in PNG rastern. CairoSVG rendert in der angegebenen Größe mit erhaltener Transparenz; erhalte Bytes oder eine presigned URL.
keywords: svg zu png konvertieren api, svg rasterung api, svg in png umwandeln api, svg png rest api, svg zu png mit transparenz, cairosvg png rendering, svg auflösung png api, svg png python beispiel
---

# SVG-zu-PNG-API

Die SVG-zu-PNG-API rastert ein SVG-Bild mit einer einzigen Anfrage an `POST /v1/convert/svg-to-png` in das PNG-Format. Lade eine `.svg`-Datei als multipart/form-data hoch, und das SVG wird mit CairoSVG in Pixel gerendert, wobei die Transparenz in der PNG-Ausgabe erhalten bleibt. Die optionalen Parameter `width` und `height` legen die Ausgabeabmessungen in Pixeln fest. Die Antwort besteht standardmäßig aus rohen PNG-Bytes, oder aus JSON-Metadaten mit einer presigned Download-URL, wenn `direct_download=false` gesetzt ist.

---

## Endpunkt

```
POST /v1/convert/svg-to-png
```

**Content-Type:** `multipart/form-data`

**Akzeptierte Eingabe:** `.svg`-Dateien

**Ausgabeformat:** `.png` (`image/png`)

---

## Authentifizierung

Erfordert entweder einen privaten API-Schlüssel oder ein JWT-Token von einem öffentlichen Schlüssel.

```
X-API-Key: sk_your_private_key
```

Oder:

```
Authorization: Bearer <jwt_token>
```

---

## Anfrageparameter

| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|-----------|------|----------|---------|-------------|
| `file` | file | Ja | -- | Die zu konvertierende `.svg`-Bilddatei. |
| `output_filename` | `string` | Nein | Name der Eingabedatei | Benutzerdefinierter Ausgabedateiname. Die Erweiterung `.png` wird automatisch hinzugefügt. |
| `direct_download` | `boolean` | Nein | `true` | Bei `true` werden rohe Bild-Bytes zurückgegeben. Bei `false` werden JSON-Metadaten mit einer presigned Download-URL zurückgegeben. |
| `width` | `integer` | Nein | Eigene Größe des SVGs | Ausgabebreite in Pixeln (1-10000). Wenn `height` weggelassen wird, wird die Höhe aus dem Seitenverhältnis des SVGs abgeleitet. |
| `height` | `integer` | Nein | Eigene Größe des SVGs | Ausgabehöhe in Pixeln (1-10000). Wenn `width` weggelassen wird, wird die Breite aus dem Seitenverhältnis des SVGs abgeleitet. |

---

## Details zur Konvertierung

- Verwendet **CairoSVG**, um das SVG direkt in PNG zu rendern
- Standardmäßig wird die Ausgabeauflösung durch die eigenen Attribute `width`, `height` und `viewBox` des SVGs bestimmt (Standard 96 DPI); die Request-Parameter `width`/`height` überschreiben sie
- Die Transparenz bleibt in der PNG-Ausgabe **erhalten**
- Wenn das SVG keine expliziten Abmessungen hat, verwendet CairoSVG seine eigenen Standardwerte

<div class="alert alert-info">
<strong>Hinweis zur Auflösung:</strong> Übergib <code>width</code> und/oder <code>height</code> (Pixel, 1-10000), um die Ausgabegröße festzulegen. Eine Dimension allein skaliert das Bild proportional zum Seitenverhältnis des SVGs; beide zusammen legen die exakte Leinwandgröße fest (was das Seitenverhältnis verändern kann). Anfragen über insgesamt 25.000.000 Ausgabepixeln werden mit <code>400</code> abgelehnt. Ohne diese Parameter bestimmen die eigenen Größenattribute des SVGs die Auflösung.
</div>

---

## Antwort

### Direkter Download (`direct_download=true`, Standard)

```
HTTP 200 OK
Content-Type: image/png
Content-Disposition: inline; filename="icon_20260405_123456789.png"
```

Gibt rohe Bild-Bytes zurück.

### Metadaten-Antwort (`direct_download=false`)

```json
{
    "presigned_url": "https://spaces.example.com/...",
    "object_key": "env/files/{project_id}/svg-to-png/icon_20260405_123456789.png",
    "filename": "icon_20260405_123456789.png",
    "file_size": 45678,
    "conversion_time_seconds": 0.5
}
```

---

## Codebeispiele

### Python

```python
import requests

with open("icon.svg", "rb") as f:
    response = requests.post(
        "https://api.enconvert.com/v1/convert/svg-to-png",
        headers={"X-API-Key": "sk_your_private_key"},
        files={"file": ("icon.svg", f)}
    )

with open("icon_20260405_123456789.png", "wb") as out:
    out.write(response.content)
```

### Node.js

```javascript
const form = new FormData();
form.append("file", fs.createReadStream("icon.svg"));

const response = await fetch("https://api.enconvert.com/v1/convert/svg-to-png", {
    method: "POST",
    headers: { "X-API-Key": "sk_your_private_key" },
    body: form
});

fs.writeFileSync("icon_20260405_123456789.png", Buffer.from(await response.arrayBuffer()));
```

### PHP

```php
$ch = curl_init("https://api.enconvert.com/v1/convert/svg-to-png");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ["X-API-Key: sk_your_private_key"],
    CURLOPT_POSTFIELDS => ["file" => new CURLFile("icon.svg")]
]);
$output = curl_exec($ch);
curl_close($ch);
file_put_contents("icon_20260405_123456789.png", $output);
```

### Go

```go
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, _ := writer.CreateFormFile("file", "icon.svg")
file, _ := os.Open("icon.svg")
io.Copy(part, file)
writer.Close()

req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/svg-to-png", body)
req.Header.Set("Content-Type", writer.FormDataContentType())
req.Header.Set("X-API-Key", "sk_your_private_key")
resp, _ := http.DefaultClient.Do(req)
```

---

## Fehlerantworten

| Status | Bedingung |
|--------|-----------|
| `400 Bad Request` | Datei ist keine `.svg`-Datei |
| `400 Bad Request` | Bildkonvertierung fehlgeschlagen (beschädigte oder nicht unterstützte Datei) |
| `400 Bad Request` | `width`/`height` außerhalb des Bereichs (1-10000) oder insgesamt mehr als 25.000.000 Ausgabepixel |
| `401 Unauthorized` | Fehlender oder ungültiger API-Schlüssel / JWT-Token |
| `402 Payment Required` | Monatliches Ops-Kontingent aufgebraucht |
| `402 Payment Required` | Speicherlimit erreicht |
| `413 Payload Too Large` | Datei überschreitet die maximale Dateigröße des Plans |

---

## Limits

| Limit | Wert |
|-------|-------|
| Maximale Dateigröße | Abhängig vom Plan (Founding: 5 MB) |
| Ausgabequalität | Maximum (nicht konfigurierbar) |
| Maximale Ausgabegröße | 10000 px pro Dimension, insgesamt 25.000.000 px |
| Monatliche Konvertierungen | Abhängig vom Plan |

---

## Häufig gestellte Fragen

### Wie rastere ich ein SVG mit einer REST API in PNG?

Sende eine `POST`-Anfrage an `/v1/convert/svg-to-png` mit deiner `.svg`-Datei als `multipart/form-data`, authentifiziert über `X-API-Key` oder ein JWT-`Authorization: Bearer`-Token. CairoSVG rendert das SVG direkt in PNG und gibt die rohen Bytes zurück.

### Wie steuere ich die Ausgabeauflösung des PNGs?

Übergib die Formularfelder `width` und/oder `height` (in Pixeln, bis zu 10000 pro Dimension). Eine einzelne Dimension skaliert die Ausgabe proportional zum Seitenverhältnis des SVGs; beide Dimensionen legen die exakte Ausgabegröße fest. Ohne sie bestimmen die eigenen Attribute `width`, `height` und `viewBox` des SVGs die Auflösung.

### Bleibt die Transparenz bei der Konvertierung von SVG zu PNG erhalten?

Ja. Die Transparenz bleibt in der PNG-Ausgabe erhalten.

### Was passiert, wenn mein SVG keine expliziten Abmessungen hat?

Wenn das SVG keine expliziten Abmessungen hat, verwendet CairoSVG seine eigenen Standardwerte, um die Ausgabegröße zu bestimmen.

### Kann ich eine presigned Download-URL statt roher PNG-Bytes erhalten?

Ja. Setze `direct_download=false`, und die API gibt JSON mit `presigned_url`, `filename`, `file_size` und `conversion_time_seconds` zurück.
