Bild auf Ausschnitt zuschneiden
Ein Bildausschnitt wirkt unkompliziert, bis ein automatisierter Auftrag Koordinaten erhält, die das Quellbild um ein Pixel überschreiten.
Im Browser ausführen – kostenlos
Läuft direkt in Ihrem Browser – kostenlos. Ihre Datei verlässt Ihren Browser nicht und wird an keinen Server übertragen.
Dieser Prüfer übernimmt Breite und Höhe des Quellbildes sowie einen durch x, y, Breite und Höhe beschriebenen Ausschnitt. Er kontrolliert jeden Wert, stellt sicher, dass das gesamte Rechteck im Bild liegt, und gibt bei einem gültigen Bereich die zugeschnittenen Abmessungen zurück. Ein Hochladen oder Dekodieren des Bildes ist nicht nötig. Daher können Sie die Prüfung vor einer Bildverarbeitung, für eine Vorschau oder beim Übernehmen von Koordinaten aus einem anderen Dienst einsetzen.
Quellbild und Ausschnitt beschreiben
Beginnen Sie mit den Pixelmaßen des Originalbildes. Tragen Sie bei image_width die gesamte horizontale Pixelzahl und bei image_height die gesamte vertikale Pixelzahl ein. Beschreiben Sie anschließend das Rechteck mit x, y, width und height. Die Werte x und y positionieren seine obere linke Ecke relativ zur oberen linken Bildecke mit der Koordinate 0,0. Width erstreckt sich nach rechts, height nach unten. Alle sechs Werte müssen ganze Zahlen sein, da diese Funktion pixelgenaue Rasterausschnitte und keine Bruchgeometrie modelliert. Bild- und Ausschnittmaße müssen positiv sein; x und y dürfen null betragen. Beispielsweise überspringt x mit dem Wert 240 die ersten 240 Pixelspalten. Ein Ausschnitt darf jede Bildkante exakt berühren. Deshalb darf x plus width gleich image_width und y plus height gleich image_height sein. Verwenden Sie Maße desselben Bildes, das später zugeschnitten wird. Koordinaten aus einer skalierten Vorschau müssen Sie zuvor auf die Originalgröße umrechnen.
Funktionsweise der Grenzprüfung verstehen
Die Prüfung weist zunächst fehlende Werte, Nicht-Ganzzahlen, negative Koordinaten, Ausschnitte ohne Fläche und Werte außerhalb des dokumentierten Bereichs zurück. Danach werden die beiden Grenzen für das vollständige Einschließen kontrolliert. Horizontal muss x plus width kleiner oder gleich image_width sein. Vertikal muss y plus height kleiner oder gleich image_height sein. Ist eine Summe größer, liegt ein Teil des Ausschnitts außerhalb der Quelle und die Anfrage liefert einen Fehler für ungültige Eingaben. Diese eindeutige Regel verhindert ein verbreitetes Missverständnis um eine Einheit: Ein 100 Pixel breiter Ausschnitt ab x 0 belegt eine vollständige Spanne von 100 Pixeln und passt exakt in ein 100 Pixel breites Bild. Die Funktion begrenzt, verschiebt oder verkleinert einen ungültigen Bereich nicht, denn eine unbemerkte Änderung kann ein anderes Motiv oder einen anderen Bildaufbau erzeugen. Bilddaten selbst werden ebenfalls nicht untersucht. Die Entscheidung beruht ausschließlich auf den angegebenen Maßen und Koordinaten und ist deshalb schnell, reproduzierbar sowie für Formulare und automatisierte Abläufe geeignet.
Ergebnis vor dem echten Zuschnitt verwenden
Eine erfolgreiche Antwort enthält Breite und Höhe des entstehenden Ausschnitts. Diese Werte entsprechen dem angeforderten Rechteck, weil die Funktion Geometrie validiert und weder neu skaliert noch verändert. Nutzen Sie die Antwort als Schutz, bevor Sie dieselben Koordinaten an eine Bildbibliothek, einen Mediendienst oder einen eingereihten Renderingauftrag übergeben. So trennen Sie eine günstige Eingabeprüfung von aufwendiger Dekodierung und halten vorhersehbare Grenzfehler von nachgelagerten Systemen fern. Prüfen Sie in einem Editor nach Bestätigung der Auswahl oder nachdem Vorschaukoordinaten in Pixel des Originals zurückgerechnet wurden. Kontrollieren Sie in einer Datenpipeline Ausschnittmetadaten direkt beim Eingang und leiten Sie fehlerhafte Datensätze zur Korrektur weiter. Beachten Sie die Ausrichtung: Dreht ein anderer Schritt das Bild tatsächlich, verwenden Sie die Maße nach der Drehung und Koordinaten derselben Orientierung. Eine API-Anfrage kostet $0.002; der Browser führt dieselbe deterministische Berechnung lokal aus. Bei keinem Weg wird ein Bild übertragen.
Anwendungsfälle
Bildverarbeitungswarteschlange schützen
Weisen Sie unzulässige Ausschnittdaten zurück, bevor ein Worker das Quellbild lädt und dekodiert.
Auswahl eines Editors prüfen
Bestätigen Sie, dass aus einer Vorschau umgerechnete Koordinaten noch in das Original passen.
Importierte Mediendaten kontrollieren
Prüfen Sie gespeicherte Rechtecke und finden Sie Datensätze, die nicht auf ihre Dateien anwendbar sind.
Häufige Fragen
Wird das Bild zugeschnitten oder hochgeladen?
Nein. Die Funktion prüft nur numerische Maße und Koordinaten und liefert die Größe des möglichen Ausschnitts.
Darf der Ausschnitt die rechte oder untere Kante berühren?
Ja. Er ist gültig, wenn x plus width image_width oder y plus height image_height entspricht.
Werden gebrochene Koordinaten unterstützt?
Nein. Sämtliche Maße und Koordinaten müssen für die Pixelausrichtung ganzzahlig sein.
Wird ein überstehender Ausschnitt automatisch angepasst?
Nein. Statt einer Änderung liefert die Anfrage einen Fehler für ungültige Eingaben.
Was kostet eine API-Anfrage?
Jede API-Anfrage kostet $0.002. Dieselbe deterministische Prüfung ist auch im Browser verfügbar.
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/image/crop-to-box \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"image_width":1920,"image_height":1080,"x":240,"y":120,"width":800,"height":600}'const res = await fetch("https://api.kit.forhosting.com/image/crop-to-box", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"image_width": 1920,
"image_height": 1080,
"x": 240,
"y": 120,
"width": 800,
"height": 600
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/crop-to-box",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"image_width": 1920,
"image_height": 1080,
"x": 240,
"y": 120,
"width": 800,
"height": 600
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/crop-to-box", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"image_width":1920,"image_height":1080,"x":240,"y":120,"width":800,"height":600}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"image_width":1920,"image_height":1080,"x":240,"y":120,"width":800,"height":600}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/crop-to-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
{
"image_width": 1920,
"image_height": 1080,
"x": 240,
"y": 120,
"width": 800,
"height": 600
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.crop_to_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
max_mb | 15 |
max_megapixels | 12 |
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. |