SVG zu HEIC API#

Konvertiere SVG mit dem Endpoint POST /v1/convert/svg-to-heic in HEIC. Das SVG wird über CairoSVG gerendert und anschließend mit maximaler Qualität als HEIC kodiert, wobei transparente Bereiche auf einen weißen Hintergrund gelegt werden. Antworten liefern standardmäßig rohe HEIC-Daten, oder JSON-Metadaten mit einer presigned Download-URL, wenn direct_download=false gesetzt ist.


Endpoint#

POST /v1/convert/svg-to-heic

Content-Type: multipart/form-data

Akzeptierte Eingabe: .svg-Dateien

Ausgabeformat: .heic (image/heic)


Authentifizierung#

Erfordert entweder einen privaten API-Schlüssel oder ein JWT-Token von einem öffentlichen Schlüssel.

X-API-Key: sk_your_private_key

Oder:

Authorization: Bearer <jwt_token>

Request-Parameter#

Parameter Typ Erforderlich Standard Beschreibung
file file Ja -- Die zu konvertierende .svg-Bilddatei.
output_filename string Nein Eingabedateiname Benutzerdefinierter Ausgabedateiname. Die Endung .heic wird automatisch hinzugefügt.
direct_download boolean Nein true Bei true werden rohe Bilddaten zurückgegeben. Bei false werden JSON-Metadaten mit einer presigned Download-URL zurückgegeben.

Details zur Konvertierung#

  • Verwendet CairoSVG, um das SVG in ein PNG-Zwischenformat zu rendern, anschließend Pillow mit pillow-heif für die HEIC-Kodierung
  • Die Ausgabeauflösung wird durch die eigenen Attribute width, height und viewBox des SVG bestimmt
  • Transparente Bereiche werden auf einen weißen Hintergrund gelegt (HEIC unterstützt keine Transparenz)
  • Die Ausgabequalität ist auf Maximum (100) festgelegt
Hinweis zur Transparenz: HEIC unterstützt keine Transparenz. Transparente Bereiche im SVG erscheinen im HEIC-Output weiß.

Antwort#

Direkter Download (direct_download=true, Standard)#

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

Gibt rohe Bilddaten zurück.

Metadaten-Antwort (direct_download=false)#

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

Codebeispiele#

Python#

import requests

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

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

Node.js#

const form = new FormData();
form.append("file", fs.createReadStream("icon.svg"));

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

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

PHP#

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

Go#

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

req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/svg-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)

Fehlerantworten#

Status Bedingung
400 Bad Request Datei ist keine .svg-Datei
400 Bad Request Bildkonvertierung fehlgeschlagen (beschädigte oder nicht unterstützte Datei)
401 Unauthorized Fehlender oder ungültiger API-Schlüssel / JWT-Token
402 Payment Required Monatliches Ops-Kontingent aufgebraucht
402 Payment Required Speicherlimit erreicht
413 Payload Too Large Datei überschreitet die maximale Dateigröße des Plans

Limits#

Limit Wert
Maximale Dateigröße Abhängig vom Plan (Founding: 5 MB)
Ausgabequalität Maximum (nicht konfigurierbar)
Monatliche Konvertierungen Abhängig vom Plan

Häufig gestellte Fragen#

Wie konvertiere ich ein SVG mit einer REST API in HEIC?#

Sende eine multipart/form-data-POST-Anfrage an /v1/convert/svg-to-heic mit dem SVG im Feld file, authentifiziert über X-API-Key oder ein Bearer-JWT. Die Antwort liefert standardmäßig rohe HEIC-Daten, oder setze direct_download=false, um JSON mit einer presigned Download-URL zu erhalten.

Bleibt die Transparenz bei der Konvertierung von SVG zu HEIC erhalten?#

Nein. HEIC unterstützt keine Transparenz, daher werden transparente Bereiche im SVG im HEIC-Output auf einen weißen Hintergrund gelegt.

Wie wird die Ausgabeauflösung bei der Konvertierung von SVG zu HEIC bestimmt?#

Die Ausgabeauflösung wird durch die eigenen Attribute width, height und viewBox des SVG bestimmt. Das SVG wird mit CairoSVG in ein PNG-Zwischenformat gerendert und anschließend mit Pillow und pillow-heif in HEIC kodiert.

Warum gibt der SVG-zu-HEIC-Endpoint einen 402-Fehler zurück?#

402 Payment Required bedeutet, dass das monatliche Ops-Kontingent oder das Speicherlimit deines Plans erreicht wurde. Übergroße Dateien liefern stattdessen 413 Payload Too Large, und ungültige oder beschädigte SVG-Dateien liefern 400 Bad Request.