---
seo_title: HEIC-zu-PNG-API: HEIC/HEIF-Bilder in PNG umwandeln | EnConvert
meta_desc: HEIC mit einer REST API in PNG umwandeln. POST /v1/convert/heic-to-png akzeptiert .heic-/.heif-Uploads und liefert verlustfreies PNG als Bytes oder presigned URL.
keywords: heic in png umwandeln api, heic zu png konvertieren api, heif in png api, heic png rest api, heic png python beispiel, heic png node.js beispiel, heic dekodierung api, verlustfreie heic png konvertierung
---

# HEIC-zu-PNG-API

Die HEIC-zu-PNG-API konvertiert ein HEIC/HEIF-Bild mit einer einzigen Anfrage an `POST /v1/convert/heic-to-png` in das PNG-Format. Lade eine `.heic`- oder `.heif`-Datei als multipart/form-data hoch und erhalte ein verlustfreies PNG mit voller Farbtreue als rohe Bytes zurück, oder setze `direct_download=false`, um JSON-Metadaten mit einer presigned Download-URL zu erhalten.

---

## Endpunkt

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

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

**Akzeptierte Eingabe:** `.heic or .heif` 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 `.heic or .heif`-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. |

---

## Details zur Konvertierung

- Verwendet **pillow-heif** zur HEIC-Dekodierung und **Pillow** zur PNG-Kodierung
- Die Farbdaten bleiben in der PNG-Ausgabe verlustfrei erhalten
- Nicht-RGBA/RGB-Farbmodi werden in RGBA umgewandelt
- Die PNG-Ausgabe verwendet verlustfreie Kompression


---

## Antwort

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

```
HTTP 200 OK
Content-Type: image/png
Content-Disposition: inline; filename="photo_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}/heic-to-png/photo_20260405_123456789.png",
    "filename": "photo_20260405_123456789.png",
    "file_size": 45678,
    "conversion_time_seconds": 0.5
}
```

---

## Codebeispiele

### Python

```python
import requests

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

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

### Node.js

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

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

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

### PHP

```php
$ch = curl_init("https://api.enconvert.com/v1/convert/heic-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("photo.heic")]
]);
$output = curl_exec($ch);
curl_close($ch);
file_put_contents("photo_20260405_123456789.png", $output);
```

### Go

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

req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/heic-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 `.heic or .heif`-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

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

Sende eine `POST`-Anfrage an `/v1/convert/heic-to-png` mit deiner `.heic`- oder `.heif`-Datei in einem `multipart/form-data`-Body, authentifiziert über `X-API-Key` oder ein JWT-`Authorization: Bearer`-Token. Das konvertierte PNG wird standardmäßig als rohe Bild-Bytes zurückgegeben.

### Ist die Konvertierung von HEIC zu PNG verlustfrei?

Ja. Die Farbdaten bleiben verlustfrei erhalten, und die PNG-Ausgabe verwendet verlustfreie Kompression. Die Dekodierung erfolgt mit pillow-heif, die Kodierung mit Pillow.

### Akzeptiert die API auch HEIF-Dateien, nicht nur HEIC?

Ja. Der Endpunkt akzeptiert sowohl `.heic`- als auch `.heif`-Dateien; alles andere wird mit `400 Bad Request` abgelehnt.

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

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

### Warum gibt die API 402 Payment Required zurück?

Eine `402 Payment Required`-Antwort bedeutet, dass das monatliche Ops-Kontingent oder Speicherlimit deines Plans erreicht wurde.
