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 -- 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)
Nota sulla trasparenza: HEIC non supporta la trasparenza. Le eventuali aree trasparenti del tuo PNG appariranno bianche nell'output HEIC.

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).