API da JPEG a HEIC#

Converti immagini JPEG in HEIC (High Efficiency Image Container) in modo programmatico con POST /v1/convert/jpeg-to-heic. L'endpoint accetta un file .jpeg o .jpg caricato e produce un file HEIC di alta qualità usando il codec HEIF. Le risposte restituiscono byte immagine grezzi per il download diretto oppure metadati JSON con un URL di download prefirmato.


Endpoint#

POST /v1/convert/jpeg-to-heic

Content-Type: multipart/form-data

Input accettato: file .jpeg or .jpg

Formato di output: .heic (image/heic)


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 -- Il file immagine .jpeg or .jpg da convertire.
output_filename string No Nome file di input Nome file di output personalizzato. L'estensione .heic 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 con pillow-heif per la codifica HEIC
  • I dati colore RGB del JPEG vengono mantenuti nell'output HEIC
  • La qualità di output è impostata al massimo (100)
  • HEIC raggiunge tipicamente dimensioni file inferiori rispetto a JPEG a parità di qualità

Risposta#

Download diretto (direct_download=true, predefinito)#

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

Restituisce i byte immagine grezzi.

Risposta con metadati (direct_download=false)#

{
    "presigned_url": "https://spaces.example.com/...",
    "object_key": "env/files/{project_id}/jpeg-to-heic/photo_20260405_123456789.heic",
    "filename": "photo_20260405_123456789.heic",
    "file_size": 45678,
    "conversion_time_seconds": 0.5
}

Esempi di codice#

Python#

import requests

with open("photo.jpg", "rb") as f:
    response = requests.post(
        "https://api.enconvert.com/v1/convert/jpeg-to-heic",
        headers={"X-API-Key": "sk_your_private_key"},
        files={"file": ("photo.jpg", f)}
    )

with open("photo_20260405_123456789.heic", "wb") as out:
    out.write(response.content)

Node.js#

const form = new FormData();
form.append("file", fs.createReadStream("photo.jpg"));

const response = await fetch("https://api.enconvert.com/v1/convert/jpeg-to-heic", {
    method: "POST",
    headers: { "X-API-Key": "sk_your_private_key" },
    body: form
});

fs.writeFileSync("photo_20260405_123456789.heic", Buffer.from(await response.arrayBuffer()));

PHP#

$ch = curl_init("https://api.enconvert.com/v1/convert/jpeg-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("photo.jpg")]
]);
$output = curl_exec($ch);
curl_close($ch);
file_put_contents("photo_20260405_123456789.heic", $output);

Go#

body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, _ := writer.CreateFormFile("file", "photo.jpg")
file, _ := os.Open("photo.jpg")
io.Copy(part, file)
writer.Close()

req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/jpeg-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 .jpeg or .jpg
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 un JPG in HEIC con una REST API?#

Invia una richiesta POST multipart/form-data a /v1/convert/jpeg-to-heic con il tuo file .jpeg o .jpg nel campo file, autenticandoti tramite X-API-Key o un token JWT Bearer. Per impostazione predefinita l'API risponde con i byte HEIC grezzi.

Convertire JPEG in HEIC riduce la dimensione del file?#

Tipicamente sì: HEIC raggiunge generalmente dimensioni file inferiori rispetto a JPEG a parità di qualità. Questo endpoint codifica alla qualità massima (100) usando Pillow con pillow-heif.

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.

Perché l'API restituisce 402 Payment Required?#

Un 402 indica che è stata esaurita la quota mensile di ops o raggiunto il limite di storage del tuo piano. I file che superano la dimensione massima del tuo piano restituiscono invece 413 Payload Too Large.