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,heightundviewBoxdes SVG bestimmt - Transparente Bereiche werden auf einen weißen Hintergrund gelegt (HEIC unterstützt keine Transparenz)
- Die Ausgabequalität ist auf Maximum (100) festgelegt
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.