API HEIC vers JPG#

Convertissez des images HEIC/HEIF en JPEG de façon programmatique avec POST /v1/convert/heic-to-jpeg. L'endpoint accepte un envoi .heic ou .heif, le décode, et produit un JPEG haute qualité. Les réponses renvoient soit les octets bruts de l'image pour un téléchargement direct, soit des métadonnées JSON avec une URL de téléchargement présignée.


Endpoint#

POST /v1/convert/heic-to-jpeg

Content-Type: multipart/form-data

Entrée acceptée : fichiers .heic or .heif

Format de sortie : .jpeg (image/jpeg)


Authentification#

Nécessite soit une clé API privée, soit un jeton JWT issu d'une clé publique.

X-API-Key: sk_your_private_key

Ou :

Authorization: Bearer <jwt_token>

Paramètres de la requête#

Paramètre Type Obligatoire Valeur par défaut Description
file file Oui -- Le fichier image .heic or .heif à convertir.
output_filename string Non Nom du fichier d'entrée Nom de fichier de sortie personnalisé. L'extension .jpeg est ajoutée automatiquement.
direct_download boolean Non true Si true, renvoie les octets bruts de l'image. Si false, renvoie des métadonnées JSON avec une URL de téléchargement présignée.

Détails de la conversion#

  • Utilise pillow-heif pour le décodage HEIC et Pillow pour l'encodage JPEG
  • Si l'image HEIC comporte un canal alpha, les zones transparentes sont composées sur un fond blanc
  • La qualité de sortie est fixée au maximum (100)

Réponse#

Téléchargement direct (direct_download=true, par défaut)#

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

Renvoie les octets bruts de l'image.

Réponse avec métadonnées (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
}

Exemples de code#

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)

Réponses d'erreur#

Statut Condition
400 Bad Request Le fichier n'est pas un fichier .heic or .heif
400 Bad Request Échec de la conversion de l'image (fichier corrompu ou non pris en charge)
401 Unauthorized Clé API / jeton JWT manquant ou invalide
402 Payment Required Quota mensuel d'ops épuisé
402 Payment Required Limite de stockage atteinte
413 Payload Too Large Le fichier dépasse la taille maximale autorisée par le plan

Limites#

Limite Valeur
Taille de fichier maximale Selon le plan (Founding : 5 MB)
Qualité de sortie Maximale (non configurable)
Conversions mensuelles Selon le plan

Questions fréquentes#

Comment convertir du HEIC en JPG avec une API REST ?#

Envoyez une requête POST multipart/form-data à /v1/convert/heic-to-jpeg avec votre fichier .heic ou .heif dans le champ file, authentifiée via X-API-Key ou un jeton JWT Bearer. Par défaut, l'API répond avec les octets bruts du JPEG.

L'API accepte-t-elle à la fois les fichiers .heic et .heif ?#

Oui. Le paramètre file accepte les fichiers .heic ou .heif ; tout autre format renvoie 400 Bad Request. Le décodage utilise pillow-heif et l'encodage JPEG utilise Pillow.

Que se passe-t-il si l'image HEIC comporte de la transparence ?#

Le JPEG ne prend pas en charge la transparence : si l'image HEIC comporte un canal alpha, les zones transparentes sont donc composées sur un fond blanc dans le résultat.

Puis-je obtenir une URL de téléchargement plutôt que les octets bruts de l'image ?#

Oui. Définissez direct_download=false et l'API renvoie des métadonnées JSON incluant presigned_url, object_key, filename, file_size et conversion_time_seconds.