---
seo_title: API da HEIC a PNG: Converti HEIC/HEIF in PNG | EnConvert
meta_desc: Converti HEIC in PNG con una API REST. POST /v1/convert/heic-to-png accetta upload .heic o .heif e restituisce un PNG lossless come byte grezzi o URL presigned.
keywords: convertire heic in png, api heic to png, convertire heif in png, heic to png rest api, heic to png python, heic to png node js, api decodifica heic, conversione heic to png senza perdita
---

# API da HEIC a PNG

L'API da HEIC a PNG converte un'immagine HEIC/HEIF in formato PNG con una singola richiesta a `POST /v1/convert/heic-to-png`. Carica un file `.heic` o `.heif` come multipart/form-data e ricevi un PNG lossless con piena fedeltà del colore come byte grezzi, oppure imposta `direct_download=false` per ottenere metadati JSON con un URL di download presigned.

---

## Endpoint

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

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

**Input accettato:** file `.heic or .heif`

**Formato di output:** `.png` (`image/png`)

---

## Autenticazione

Richiede una chiave API privata oppure un token JWT generato da una chiave pubblica.

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

Oppure:

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

---

## Parametri della richiesta

| Parametro | Tipo | Obbligatorio | Predefinito | Descrizione |
|-----------|------|----------|---------|-------------|
| `file` | file | Sì | -- | Il file immagine `.heic or .heif` da convertire. |
| `output_filename` | `string` | No | Nome del file di input | Nome file di output personalizzato. L'estensione `.png` viene aggiunta automaticamente. |
| `direct_download` | `boolean` | No | `true` | Se `true`, restituisce i byte grezzi dell'immagine. Se `false`, restituisce metadati JSON con un URL di download presigned. |

---

## Dettagli della conversione

- Usa **pillow-heif** per la decodifica HEIC e **Pillow** per la codifica PNG
- I dati colore vengono preservati senza perdita nell'output PNG
- Le modalità colore diverse da RGBA/RGB vengono convertite in RGBA
- L'output PNG usa compressione senza perdita


---

## Risposta

### Download diretto (`direct_download=true`, predefinito)

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

Restituisce i byte grezzi dell'immagine.

### Risposta con metadati (`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
}
```

---

## Esempi di codice

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

---

## Risposte di errore

| Stato | Condizione |
|--------|-----------|
| `400 Bad Request` | Il file non è un file `.heic or .heif` |
| `400 Bad Request` | Conversione dell'immagine non riuscita (file corrotto o non supportato) |
| `401 Unauthorized` | Chiave API / token JWT mancante o non valido |
| `402 Payment Required` | Quota mensile di ops esaurita |
| `402 Payment Required` | Limite di storage raggiunto |
| `413 Payload Too Large` | Il file supera la dimensione massima prevista dal piano |

---

## Limiti

| Limite | Valore |
|-------|-------|
| Dimensione massima del file | Dipende dal piano (Founding: 5 MB) |
| Qualità di output | Massima (non configurabile) |
| Conversioni mensili | Dipende dal piano |

---

## Domande frequenti

### Come converto HEIC in PNG con una API REST?

Invia una richiesta `POST` a `/v1/convert/heic-to-png` con il tuo file `.heic` o `.heif` in un body `multipart/form-data`, autenticandoti tramite `X-API-Key` o un token JWT `Authorization: Bearer`. Per impostazione predefinita il PNG convertito viene restituito come byte grezzi dell'immagine.

### La conversione da HEIC a PNG è senza perdita?

Sì. I dati colore vengono preservati senza perdita e l'output PNG usa compressione senza perdita. La decodifica usa pillow-heif e la codifica usa Pillow.

### L'API accetta anche file HEIF oltre a HEIC?

Sì. L'endpoint accetta sia file `.heic` che `.heif`; qualsiasi altro formato viene rifiutato con `400 Bad Request`.

### Posso ottenere un URL di download invece dei byte PNG grezzi?

Sì. Imposta `direct_download=false` e l'API restituisce metadati JSON con `presigned_url`, `filename`, `file_size` e `conversion_time_seconds`.

### Perché l'API restituisce 402 Payment Required?

Una risposta `402 Payment Required` significa che è stata esaurita la quota mensile di ops o raggiunto il limite di storage del tuo piano.
