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)
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)#
{
"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#
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#
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#
$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#
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).