API da HEIC a JPG#
Converti immagini HEIC/HEIF in JPEG in modo programmatico con POST /v1/convert/heic-to-jpeg. L'endpoint accetta un file .heic o .heif caricato, lo decodifica e produce un JPEG di alta qualità. Le risposte restituiscono byte immagine grezzi per il download diretto oppure metadati JSON con un URL di download prefirmato.
Endpoint#
POST /v1/convert/heic-to-jpeg
Content-Type: multipart/form-data
Input accettato: file .heic or .heif
Formato di output: .jpeg (image/jpeg)
Autenticazione#
Richiede una chiave API privata oppure un token JWT da 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 file di input | Nome file di output personalizzato. L'estensione .jpeg viene aggiunta automaticamente. |
direct_download |
boolean |
No | true |
Se true, restituisce i byte immagine grezzi. Se false, restituisce metadati JSON con un URL di download prefirmato. |
Dettagli della conversione#
- Usa pillow-heif per la decodifica HEIC e Pillow per la codifica JPEG
- Se l'immagine HEIC ha un canale alfa, le aree trasparenti vengono compositate 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/jpeg
Content-Disposition: inline; filename="photo_20260405_123456789.jpeg"
Restituisce i byte immagine grezzi.
Risposta con metadati (direct_download=false)#
{
"presigned_url": "https://spaces.example.com/...",
"object_key": "env/files/{project_id}/heic-to-jpeg/photo_20260405_123456789.jpeg",
"filename": "photo_20260405_123456789.jpeg",
"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-jpeg",
headers={"X-API-Key": "sk_your_private_key"},
files={"file": ("photo.heic", f)}
)
with open("photo_20260405_123456789.jpeg", "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-jpeg", {
method: "POST",
headers: { "X-API-Key": "sk_your_private_key" },
body: form
});
fs.writeFileSync("photo_20260405_123456789.jpeg", Buffer.from(await response.arrayBuffer()));
PHP#
$ch = curl_init("https://api.enconvert.com/v1/convert/heic-to-jpeg");
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.jpeg", $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-jpeg", 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 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 consentita dal piano |
Limiti#
| Limite | Valore |
|---|---|
| Dimensione massima file | Dipende dal piano (Founding: 5 MB) |
| Qualità di output | Massima (non configurabile) |
| Conversioni mensili | Dipende dal piano |
Domande frequenti#
Come converto HEIC in JPG con una REST API?#
Invia una richiesta POST multipart/form-data a /v1/convert/heic-to-jpeg con il tuo file .heic o .heif nel campo file, autenticandoti tramite X-API-Key o un token JWT Bearer. Per impostazione predefinita l'API risponde con i byte JPEG grezzi.
L'API accetta sia file .heic che .heif?#
Sì. Il parametro file accetta file .heic o .heif; qualsiasi altro formato restituisce 400 Bad Request. La decodifica usa pillow-heif e la codifica JPEG usa Pillow.
Cosa succede se l'immagine HEIC ha trasparenza?#
JPEG non supporta la trasparenza, quindi se l'immagine HEIC ha un canale alfa, le aree trasparenti vengono compositate su uno sfondo bianco nell'output.
Posso ottenere un URL di download invece dei byte immagine grezzi?#
Sì. Imposta direct_download=false e l'API restituisce metadati JSON che includono presigned_url, object_key, filename, file_size e conversion_time_seconds.