---
seo_title: PNG-zu-HEIC-API: PNG-Bilder in HEIC umwandeln | EnConvert
meta_desc: PNG mit einer REST API in HEIC umwandeln. POST /v1/convert/png-to-heic akzeptiert multipart .png-Uploads und liefert rohe HEIC-Bytes oder eine presigned URL.
keywords: png in heic umwandeln api, png zu heic konvertieren api, png heic rest api, png heic python beispiel, png heic node.js beispiel, heic kodierung api, bildkonvertierung api heic, png transparenz heic hintergrund
---

# PNG-zu-HEIC-API

Die PNG-zu-HEIC-API konvertiert ein PNG-Bild mit einer einzigen Anfrage an `POST /v1/convert/png-to-heic` in das HEIC-Format (High Efficiency Image Container). Lade eine `.png`-Datei als multipart/form-data hoch und erhalte rohe HEIC-Bytes zurück, oder setze `direct_download=false`, um stattdessen JSON-Metadaten mit einer presigned Download-URL zu erhalten. Da HEIC keine Transparenz unterstützt, werden transparente Bereiche im PNG auf einem weißen Hintergrund zusammengesetzt.

---

## Endpunkt

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

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

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

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

---

## 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 `.heic` 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** mit **pillow-heif** zur HEIC-Kodierung
- Wenn das PNG einen Alphakanal (RGBA) hat, werden transparente Bereiche auf einem **weißen Hintergrund** zusammengesetzt
- Die Ausgabequalität ist auf das Maximum (100) eingestellt

<div class="alert alert-info">
<strong>Hinweis zur Transparenz:</strong> HEIC unterstützt keine Transparenz. Transparente Bereiche in deinem PNG erscheinen in der HEIC-Ausgabe weiß.
</div>

---

## Antwort

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

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

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-heic/image_20260405_123456789.heic",
    "filename": "image_20260405_123456789.heic",
    "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-heic",
        headers={"X-API-Key": "sk_your_private_key"},
        files={"file": ("image.png", f)}
    )

with open("image_20260405_123456789.heic", "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-heic", {
    method: "POST",
    headers: { "X-API-Key": "sk_your_private_key" },
    body: form
});

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

### PHP

```php
$ch = curl_init("https://api.enconvert.com/v1/convert/png-to-heic");
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.heic", $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-heic", 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

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

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

### Was passiert mit der PNG-Transparenz bei der Konvertierung zu HEIC?

HEIC unterstützt keine Transparenz. Wenn das PNG also einen Alphakanal (RGBA) hat, werden transparente Bereiche in der HEIC-Ausgabe auf einem weißen Hintergrund zusammengesetzt.

### Kann ich die HEIC-Ausgabequalität steuern?

Nein. Die Ausgabequalität ist auf das Maximum (100) eingestellt und nicht konfigurierbar. Die Kodierung erfolgt mit Pillow und pillow-heif.

### Kann ich eine Download-URL statt roher HEIC-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 413 Payload Too Large zurück?

Die hochgeladene Datei überschreitet die maximale Dateigröße deines Plans (5 MB im Founding-Plan).
