---
seo_title: API PNG vers HEIC : Convertir des images en HEIC | EnConvert
meta_desc: Convertissez PNG en HEIC via une API REST. POST /v1/convert/png-to-heic accepte les uploads multipart .png et renvoie des octets HEIC ou une URL présignée.
keywords: api png vers heic, convertir png en heic api, api rest png vers heic, png vers heic python, png vers heic node js, api encodage heic, conversion image png heic, transparence png vers heic
---

# API PNG vers HEIC

L'API PNG vers HEIC convertit une image PNG au format HEIC (High Efficiency Image Container) en une seule requête vers `POST /v1/convert/png-to-heic`. Envoyez un fichier `.png` en multipart/form-data et recevez les octets HEIC bruts en retour, ou définissez `direct_download=false` pour obtenir des métadonnées JSON avec une URL de téléchargement présignée. Comme HEIC ne prend pas en charge la transparence, les zones transparentes du PNG sont composées sur un fond blanc.

---

## Point de terminaison

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

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

**Entrée acceptée :** fichiers `.png`

**Format de sortie :** `.heic` (`image/heic`)

---

## Authentification

Nécessite soit une clé API privée, soit un jeton JWT issu d'une clé publique.

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

Ou :

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

---

## Paramètres de la requête

| Paramètre | Type | Requis | Par défaut | Description |
|-----------|------|----------|---------|-------------|
| `file` | file | Oui | -- | Le fichier image `.png` à convertir. |
| `output_filename` | `string` | Non | Nom du fichier d'entrée | Nom de fichier de sortie personnalisé. L'extension `.heic` est ajoutée automatiquement. |
| `direct_download` | `boolean` | Non | `true` | Lorsque la valeur est `true`, renvoie les octets bruts de l'image. Lorsqu'elle est `false`, renvoie des métadonnées JSON avec une URL de téléchargement présignée. |

---

## Détails de la conversion

- Utilise **Pillow** avec **pillow-heif** pour l'encodage HEIC
- Si le PNG possède un canal alpha (RGBA), les zones transparentes sont composées sur un **fond blanc**
- La qualité de sortie est réglée au maximum (100)

<div class="alert alert-info">
<strong>Note sur la transparence :</strong> HEIC ne prend pas en charge la transparence. Toute zone transparente de votre PNG apparaîtra en blanc dans la sortie HEIC.
</div>

---

## Réponse

### Téléchargement direct (`direct_download=true`, par défaut)

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

Renvoie les octets bruts de l'image.

### Réponse de métadonnées (`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
}
```

---

## Exemples de code

### 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)
```

---

## Réponses d'erreur

| Statut | Condition |
|--------|-----------|
| `400 Bad Request` | Le fichier n'est pas un fichier `.png` |
| `400 Bad Request` | La conversion de l'image a échoué (fichier corrompu ou non pris en charge) |
| `401 Unauthorized` | Clé API / jeton JWT manquant ou invalide |
| `402 Payment Required` | Quota mensuel d'ops épuisé |
| `402 Payment Required` | Limite de stockage atteinte |
| `413 Payload Too Large` | Le fichier dépasse la taille maximale autorisée par le forfait |

---

## Limites

| Limite | Valeur |
|-------|-------|
| Taille maximale de fichier | Selon le forfait (Founding : 5 MB) |
| Qualité de sortie | Maximale (non configurable) |
| Conversions mensuelles | Selon le forfait |

---

## Questions fréquentes

### Comment convertir PNG en HEIC avec une API REST ?

Envoyez une requête `POST` à `/v1/convert/png-to-heic` avec votre fichier `.png` dans un corps `multipart/form-data`, authentifiée via `X-API-Key` ou un jeton JWT `Authorization: Bearer`. Le HEIC converti est renvoyé par défaut sous forme d'octets bruts.

### Que devient la transparence du PNG lors de la conversion en HEIC ?

HEIC ne prend pas en charge la transparence : si le PNG possède un canal alpha (RGBA), les zones transparentes sont composées sur un fond blanc dans le HEIC produit.

### Puis-je contrôler la qualité de sortie du HEIC ?

Non. La qualité de sortie est réglée au maximum (100) et n'est pas configurable. L'encodage utilise Pillow avec pillow-heif.

### Puis-je obtenir une URL de téléchargement au lieu des octets HEIC bruts ?

Oui. Définissez `direct_download=false` et l'API renvoie des métadonnées JSON avec `presigned_url`, `filename`, `file_size` et `conversion_time_seconds`.

### Pourquoi l'API renvoie-t-elle 413 Payload Too Large ?

Le fichier envoyé dépasse la taille maximale autorisée par votre forfait (5 MB pour le forfait Founding).
