Begrenzungsrahmen eines SVG-Pfads berechnen
Dieser Rechner liest die Koordinatenbefehle eines SVG-Pfads und gibt minimale sowie maximale x- und y-Werte mitsamt Breite und Höhe zurück.
Im Browser ausführen – kostenlos
Er verarbeitet Linien, Bézierkurven, elliptische Bögen, relative Befehle, geglättete Kontrollpunkte und geschlossene Teilpfade. Da Kurven über ihre Endpunkte hinausreichen können und Kontrollpunkte nicht zwingend auf der Kurve liegen, werden geometrische Extrema berechnet, statt lediglich die Zahlen im Quelltext zu sammeln.
Grenzen allein aus den Pfaddaten berechnen
Fügen Sie den Wert des <code>d</code>-Attributs eines SVG-Pfads in das Feld ein. Unterstützt werden die üblichen Befehle für Bewegung, Linie, Horizontale, Vertikale, kubische und quadratische Bézierkurven, geglättete Varianten, elliptische Bögen und Schließen, jeweils absolut und relativ. Ausgegeben werden <code>min_x</code>, <code>min_y</code>, <code>max_x</code>, <code>max_y</code>, Breite und Höhe im pfadeigenen Koordinatensystem. Transformationen des Elements oder seiner Gruppen werden nicht angewandt; Strichstärke, Enden, Verbindungen, Marker, Filter und Beschnitt erweitern das Ergebnis nicht. Gemessen wird somit exakt die kodierte Mittelliniengeometrie. Ein leerer Pfad führt zu einem Fehler, während ein einzelner Bewegungspunkt richtigerweise Breite und Höhe null ergibt.
Warum Kurven analytische Extrema benötigen
Ein verlässlicher Rahmen lässt sich nicht nur aus Segmentendpunkten bestimmen. Eine Bézierkurve kann ihr Minimum oder Maximum zwischen Anfang und Ende erreichen, während ein äußerer Kontrollpunkt nie berührt wird. Der Rechner löst die Ableitung jeder Koordinate und wertet innere Nullstellen aus. Bei Bögen wandelt er die SVG-Form in eine Mittelpunktdarstellung um, berücksichtigt Radienanpassung und Drehung, bestimmt Extremwinkel und übernimmt nur Kandidaten im gewählten Bogenlauf. Geglättete Befehle spiegeln den vorherigen Kontrollpunkt, relative Koordinaten beginnen am aktuellen Punkt und das Schließen fügt die Rücklinie hinzu. So entstehen geometrische Grenzen ohne Stichproben; auch schmale Spitzen zwischen beliebigen Abtastpositionen werden erfasst.
Das Ergebnis in SVG-Werkzeugen verwenden
Der zurückgegebene Rahmen hilft beim Erstellen einer viewBox, Zentrieren von Grafiken, Vereinheitlichen von Symbolen, Vergleichen von Ausdehnungen, Platzieren von Anmerkungen und Prüfen erzeugter Geometrie. Für eine passende viewBox verwenden Sie <code>min_x min_y width height</code> in dieser Reihenfolge. Bei sichtbaren Strichen ergänzen Sie anschließend den nötigen Rand; Transformationen behandeln Sie mit einem geeigneten Matrixverfahren. Der Parser akzeptiert Kommas oder Leerzeichen, benachbarte Vorzeichen, Dezimalwerte und wissenschaftliche Schreibweise. Unbekannte Befehle, unvollständige Gruppen, fehlerhafter Text, ungültige Bogenflags und negative Radien werden abgelehnt. Das Ergebnis ist deterministisch, benötigt weder Netzwerk noch externen Renderer und nutzt in Browser und API dieselbe reine Berechnung.
Anwendungsfälle
Eine passende viewBox erzeugen
Bilden Sie aus Mindestkoordinaten, Breite und Höhe eine viewBox, die die Geometrie eng umfasst.
Eine Symbolsammlung vereinheitlichen
Messen Sie Pfade einheitlich, bevor Sie Symbole in ein gemeinsames Koordinatensystem übertragen.
Erzeugte SVG-Geometrie prüfen
Prüfen Sie, ob programmatisch erzeugte Kurven und Bögen innerhalb der vorgesehenen Zeichenfläche bleiben.
Häufige Fragen
Werden Kurven und Bögen genau berücksichtigt?
Ja. Analytische Extrema von Bézierkurven und gedrehten elliptischen Bögen werden ohne Stichproben ausgewertet.
Ist die Strichstärke enthalten?
Nein. Das Ergebnis umfasst nur die Pfadgeometrie, ohne Strich, Enden, Verbindungen, Marker, Filter oder Effekte.
Werden SVG-Transformationen angewandt?
Nein. Gemessen wird im Koordinatensystem des Pfads; Element- und Vorfahrtransformationen gehören nicht zur Eingabe.
Was geschieht bei einem leeren Pfad?
Die Anfrage schlägt wegen ungültiger Eingabe fehl, da leere Pfaddaten keinen Begrenzungsrahmen besitzen.
Was kostet eine API-Anfrage?
Jede API-Anfrage kostet $0.002. Die Browserversion wird kostenlos lokal ausgeführt.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/web/svg-path-bounding-box \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"path":"M10 20 C30 0 50 40 70 20 L90 60"}'const res = await fetch("https://api.kit.forhosting.com/web/svg-path-bounding-box", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"path": "M10 20 C30 0 50 40 70 20 L90 60"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/svg-path-bounding-box",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"path": "M10 20 C30 0 50 40 70 20 L90 60"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/svg-path-bounding-box", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"path":"M10 20 C30 0 50 40 70 20 L90 60"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"path":"M10 20 C30 0 50 40 70 20 L90 60"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/svg-path-bounding-box", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"path": "M10 20 C30 0 50 40 70 20 L90 60"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.svg_path_bounding_box",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
timeout_sec | 30 |
max_crawl_pages | 25 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |