API HEIC vers PNG#

L'API HEIC vers PNG convertit une image HEIC/HEIF au format PNG en une seule requête vers POST /v1/convert/heic-to-png. Envoyez un fichier .heic ou .heif en multipart/form-data et recevez un PNG sans perte, avec une fidélité chromatique complète, sous forme d'octets bruts, ou définissez direct_download=false pour obtenir des métadonnées JSON avec une URL de téléchargement présignée.


Point de terminaison#

POST /v1/convert/heic-to-png

Content-Type : multipart/form-data

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

Format de sortie : .png (image/png)


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 Requis 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 .png est ajoutée automatiquement.
direct_download boolean Non true Lorsque la valeur est true, renvoie les octets bruts de l'image. Lorsqu'elle est 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 PNG
  • Les données chromatiques sont préservées sans perte dans le PNG produit
  • Les modes colorimétriques autres que RGBA/RGB sont convertis en RGBA
  • Le PNG produit utilise une compression sans perte

Réponse#

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

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

Renvoie les octets bruts de l'image.

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

Exemples de code#

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)

Réponses d'erreur#

Statut Condition
400 Bad Request Le fichier n'est pas un fichier .heic or .heif
400 Bad Request La conversion de l'image a échoué (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 forfait

Limites#

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

Questions fréquentes#

Comment convertir HEIC en PNG avec une API REST ?#

Envoyez une requête POST à /v1/convert/heic-to-png avec votre fichier .heic ou .heif dans un corps multipart/form-data, authentifiée via X-API-Key ou un jeton JWT Authorization: Bearer. Le PNG converti est renvoyé par défaut sous forme d'octets bruts.

La conversion de HEIC en PNG est-elle sans perte ?#

Oui. Les données chromatiques sont préservées sans perte et le PNG produit utilise une compression sans perte. Le décodage utilise pillow-heif et l'encodage utilise Pillow.

L'API accepte-t-elle les fichiers HEIF en plus du HEIC ?#

Oui. Ce point de terminaison accepte à la fois les fichiers .heic et .heif ; tout autre format est rejeté avec 400 Bad Request.

Puis-je obtenir une URL de téléchargement au lieu des octets PNG bruts ?#

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

Pourquoi l'API renvoie-t-elle 402 Payment Required ?#

Une réponse 402 Payment Required signifie que le quota mensuel d'ops ou la limite de stockage de votre forfait a été atteint.