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

{
    "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#

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#

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#

$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#

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.