---
seo_title: API da PNG a HEIC: Converti Immagini PNG in HEIC | EnConvert
meta_desc: Converti PNG in HEIC con una API REST. POST /v1/convert/png-to-heic accetta upload multipart .png e restituisce byte HEIC grezzi o un URL di download presigned.
keywords: convertire png in heic, api png to heic, png to heic rest api, png to heic python, png to heic node js, api codifica heic, api conversione immagini heic, trasparenza png in heic
---

# API da PNG a HEIC

L'API da PNG a HEIC converte un'immagine PNG in formato HEIC (High Efficiency Image Container) con una singola richiesta a `POST /v1/convert/png-to-heic`. Carica un file `.png` come multipart/form-data e ricevi i byte HEIC grezzi in risposta, oppure imposta `direct_download=false` per ottenere metadati JSON con un URL di download presigned. Poiché HEIC non supporta la trasparenza, le aree trasparenti del PNG vengono composite su uno sfondo bianco.

---

## Endpoint

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

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

**Input accettato:** file `.png`

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

---

## 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 `.png` da convertire. |
| `output_filename` | `string` | No | Nome del file di input | Nome file di output personalizzato. L'estensione `.heic` 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** con **pillow-heif** per la codifica HEIC
- Se il PNG ha un canale alfa (RGBA), le aree trasparenti vengono composite su uno **sfondo bianco**
- La qualità di output è impostata al massimo (100)

<div class="alert alert-info">
<strong>Nota sulla trasparenza:</strong> HEIC non supporta la trasparenza. Le eventuali aree trasparenti del tuo PNG appariranno bianche nell'output HEIC.
</div>

---

## Risposta

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

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

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}/png-to-heic/image_20260405_123456789.heic",
    "filename": "image_20260405_123456789.heic",
    "file_size": 45678,
    "conversion_time_seconds": 0.5
}
```

---

## Esempi di codice

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

---

## Risposte di errore

| Stato | Condizione |
|--------|-----------|
| `400 Bad Request` | Il file non è un file `.png` |
| `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 PNG in HEIC con una API REST?

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

### Cosa succede alla trasparenza del PNG quando converto in HEIC?

HEIC non supporta la trasparenza, quindi se il PNG ha un canale alfa (RGBA), le aree trasparenti vengono composite su uno sfondo bianco nell'output HEIC.

### Posso controllare la qualità di output dell'HEIC?

No. La qualità di output è impostata al massimo (100) e non è configurabile. La codifica usa Pillow con pillow-heif.

### Posso ottenere un URL di download invece dei byte HEIC 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 413 Payload Too Large?

Il file caricato supera la dimensione massima prevista dal tuo piano (5 MB nel piano Founding).
