---
seo_title: PNG-zu-SVG-API: PNG in SVG-Wrapper einbetten | EnConvert
meta_desc: PNG per POST /v1/convert/png-to-svg in ein SVG einbetten. Das PNG wird base64-kodiert als Daten-URI in ein SVG-image-Element eingebettet, keine Vektorisierung.
keywords: png in svg einbetten api, png zu svg api ohne vektorisierung, base64 png data uri svg, png in svg wrapper, svg mit eingebettetem png, png zu svg konvertieren api, rasterbild in svg, png svg rest api
---

# PNG-zu-SVG-API

Die PNG-zu-SVG-API bettet ein PNG-Bild mit einer einzigen Anfrage an `POST /v1/convert/png-to-svg` in einen SVG-Wrapper ein. Die PNG-Daten werden base64-kodiert und als Daten-URI innerhalb eines SVG-`<image>`-Elements platziert, wobei die SVG-Abmessungen und das viewBox den Pixelabmessungen des Originalbilds entsprechen. Dies ist keine Vektorisierung. Die Ausgabe ist ein Rasterbild, das in SVG eingebettet ist. Die Antwort liefert die SVG-Bytes direkt, oder JSON-Metadaten mit einer presigned Download-URL, wenn `direct_download=false` gesetzt ist.

---

## Endpunkt

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

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

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

**Ausgabeformat:** `.svg` (`image/svg+xml`)

---

## 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 `.png`-Bilddatei. |
| `output_filename` | `string` | Nein | Name der Eingabedatei | Benutzerdefinierter Ausgabedateiname. Die Erweiterung `.svg` 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. |

---

## Details zur Konvertierung

- Das PNG wird **base64-kodiert und eingebettet** als Daten-URI innerhalb eines SVG-`<image>`-Elements
- Die SVG-Abmessungen und das viewBox entsprechen den Pixelabmessungen des Originalbilds
- Die Transparenz des PNGs bleibt in den eingebetteten Daten erhalten
- **Dies ist KEINE Vektorisierung** -- die Ausgabe enthält die vollständigen Rasterbilddaten, keine Vektorpfade

<div class="alert alert-warning">
<strong>Keine Vektorisierung:</strong> Dieser Endpunkt bettet das Rasterbild in einen SVG-Container ein. Er zeichnet das Bild nicht nach und wandelt es nicht in Vektorpfade um. Die Ausgabedatei ist aufgrund der base64-Kodierung größer als die Eingabedatei (~33 % Overhead).
</div>

---

## Antwort

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

```
HTTP 200 OK
Content-Type: image/svg+xml
Content-Disposition: inline; filename="image_20260405_123456789.svg"
```

Gibt rohe Bild-Bytes zurück.

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

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

---

## Codebeispiele

### Python

```python
import requests

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

with open("image_20260405_123456789.svg", "wb") as out:
    out.write(response.content)
```

### Node.js

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

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

fs.writeFileSync("image_20260405_123456789.svg", Buffer.from(await response.arrayBuffer()));
```

### PHP

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

### Go

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

req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/png-to-svg", 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 `.png`-Datei |
| `400 Bad Request` | Bildkonvertierung fehlgeschlagen (beschädigte oder nicht unterstützte Datei) |
| `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) |
| Monatliche Konvertierungen | Abhängig vom Plan |

---

## Häufig gestellte Fragen

### Vektorisiert die PNG-zu-SVG-API mein Bild?

Nein. Dieser Endpunkt bettet das Raster-PNG als base64-Daten-URI in einen SVG-Container innerhalb eines SVG-`<image>`-Elements ein. Er zeichnet das Bild nicht nach und wandelt es nicht in Vektorpfade um.

### Warum ist meine SVG-Ausgabedatei größer als die PNG-Eingabedatei?

Das PNG wird beim Einbetten in das SVG base64-kodiert, was etwa 33 % Overhead hinzufügt, sodass die Ausgabedatei größer ist als die Eingabedatei.

### Bleibt die PNG-Transparenz beim Einbetten in SVG erhalten?

Ja. Die Transparenz des PNGs bleibt in den eingebetteten Daten erhalten, und die SVG-Abmessungen sowie das viewBox entsprechen den Pixelabmessungen des Originalbilds.

### Wie konvertiere ich PNG mit einer REST API in SVG?

Sende eine `POST`-Anfrage an `/v1/convert/png-to-svg` mit deiner `.png`-Datei als `multipart/form-data`, authentifiziert über `X-API-Key` oder ein JWT-`Authorization: Bearer`-Token. Du erhältst die SVG-Bytes zurück oder eine `presigned_url` in JSON, wenn `direct_download=false` gesetzt ist.

### Warum gibt die API 400 Bad Request zurück?

Ein `400 Bad Request` bedeutet, dass die hochgeladene Datei keine `.png`-Datei ist oder die Bildkonvertierung fehlgeschlagen ist, weil die Datei beschädigt oder nicht unterstützt wird.
