Raster für wiederholte Wasserzeichen-Kacheln erstellen
Ein Bild mit 300×200, Kacheln mit 100×50, Abständen von 20 und 10 und einer Drehung um 30° braucht 15 Kachelpositionen, angeschnittene Randkacheln eingeschlossen. Geben Sie Fläche, Kachel, Abstände und Winkel ein und erhalten Sie jede Kachelmitte. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Leinwandbreite
- 300
- Leinwandhöhe
- 200
- Fliesenbreite
- 100
- Kachelhöhe
- 50
- Abstand X
- 20
- Abstand Y
- 10
- Anzahl
- 15
Erstellen Sie ein vollständiges Raster wiederholter Wasserzeichen, ohne die benötigten Kopien jenseits der sichtbaren Ränder schätzen zu müssen. Geben Sie die Abmessungen von Leinwand und Kachel, die horizontalen und vertikalen Abstände sowie den Drehwinkel an. Der Rechner liefert stabile Mittelpunktskoordinaten für jede gedrehte Kachel, die die Leinwand berührt, einschließlich angeschnittener Randkacheln. Das Layout ist zentriert, nutzt konsistente Zeilen- und Spaltenkennungen und lässt sich direkt an eine Rendering-Pipeline für Bilder, SVG, PDF oder Canvas übergeben.
Definieren Sie Leinwand und Wasserzeichen-Kachel
Beginnen Sie mit Breite und Höhe der Zielleinwand und geben Sie anschließend die ungedrehte Breite und Höhe einer Wasserzeichen-Kachel an. Alle Abmessungen verwenden dieselbe Einheit, üblicherweise Pixel; Punkte oder eine andere Koordinateneinheit sind ebenfalls möglich, wenn Ihr Renderer ein anderes System nutzt. Die Kachel muss in beiden Abmessungen auf die Leinwand passen.
Diese Prüfung erkennt versehentlich vertauschte Werte, falsche Einheitenumrechnungen und Anfragen, die statt eines wiederholten Musters nur einen übergroßen Stempel erzeugen würden. Legen Sie danach den horizontalen und vertikalen Abstand fest. Diese Werte bezeichnen Lücken zwischen den Kachelkanten entlang der eigenen Rasterachsen, nicht absolute Bildschirmabstände nach der Drehung.
Null setzt Kacheln Kante an Kante; größere Werte erzeugen ein luftigeres Muster. Der zurückgegebene Ursprung ist die Leinwandmitte. Zeile null und Spalte null kennzeichnen die dort zentrierte Kachel und geben Ihrem nachgelagerten Code einen stabilen Bezugspunkt, selbst wenn sich Leinwandgröße, Abstand oder Winkel später ändern.
Verstehen Sie Drehung und Randabdeckung
Der Winkel dreht das gesamte Gitter im Uhrzeigersinn um die Leinwandmitte. Jeder endliche Gradwert wird akzeptiert und auf eine Umdrehung normalisiert, sodass minus dreißig Grad und dreihundertdreißig Grad dasselbe Layout ergeben. Durch die Drehung wächst der abzudeckende Bereich: Eine Kachel, deren Mittelpunkt außerhalb des Bildes liegt, kann mit einer Ecke noch darin sichtbar sein.
Deshalb projiziert der Rechner die Leinwand auf die gedrehten Rasterachsen, erzeugt eine begrenzte Menge möglicher Zeilen und Spalten und prüft jedes gedrehte Kachelrechteck gegen das Leinwandrechteck. Eine Position wird ausgegeben, sobald sich beide Rechtecke berühren oder überschneiden. Diese genaue Schnittregel verhindert fehlende Eckkacheln und entfernt entfernte Kacheln, die ein einfacher übergroßer Begrenzungsrahmen einschließen würde.
Die Koordinaten beschreiben Mittelpunkte, weil Rasterbibliotheken, SVG- und CSS-Transformationen sowie Canvas-APIs eine Drehung um den Mittelpunkt einheitlich unterstützen. Angeschnittene Randkacheln sind beabsichtigt; lassen Sie sie vom Zielrenderer an der Leinwand beschneiden.
Rendern und reproduzieren Sie das Layout
Verarbeiten Sie die Positionen in der ausgegebenen Reihenfolge: zuerst von kleineren zu größeren Zeilenkennungen und innerhalb jeder Zeile von kleineren zu größeren Spalten. Zeilen- und Spaltenkennungen helfen beim Debuggen, beim Wechseln der Deckkraft oder beim Auswählen jeder zweiten Kachel, ersetzen aber nicht die Koordinaten. Zahlenwerte werden auf sechs Dezimalstellen gerundet, damit serialisierte Ergebnisse stabil bleiben und dennoch Subpixelgenauigkeit für hochauflösende Ausgaben bieten.
Für ein versetztes Mauerwerksmuster, zufällige Abweichungen, einzeln gedrehte Marken oder Textmessung wenden Sie diese Transformationen nach Erhalt des regelmäßigen Rasters an oder nutzen einen spezialisierten Compositor.
Anwendungsfälle
Vorschaubilder schützen
Wiederholen Sie ein Logo über Produktvorschauen, Korrekturabzügen oder Portfolios, damit ein einzelner Zuschnitt nicht sämtliche Marken entfernt.
Rendering-Anweisungen erzeugen
Erstellen Sie stabile Kachelmittelpunkte für Canvas, SVG, PDF oder serverseitige Bildpipelines, ohne die Layoutberechnung mehrfach zu implementieren.
Exporte einheitlich halten
Verwenden Sie dieselben Winkel- und Abstandsregeln für mehrere Leinwandgrößen und behalten Sie ein zentriertes, deterministisches Muster bei.
Häufige Fragen
Bezeichnen die x- und y-Koordinaten Ecken oder Mittelpunkte?
Sie bezeichnen die Kachelmittelpunkte. Drehen und zeichnen Sie jedes Wasserzeichen mit dem ausgegebenen Winkel um diesen Punkt.
Warum liegen einige Mittelpunkte außerhalb der Leinwand?
Eine gedrehte Kachel kann die Leinwand trotz außen liegendem Mittelpunkt schneiden. Diese Positionen decken Ränder und Ecken ab und werden beim Rendern beschnitten.
In welche Richtung wirkt der Winkel?
Positive Winkel drehen im üblichen Bildkoordinatensystem im Uhrzeigersinn; x wächst nach rechts und y nach unten.
Darf der Abstand null sein?
Ja. Null lässt benachbarte Kanten entlang dieser Rasterachse zusammentreffen. Der Abstand darf nicht negativ sein.
Darf die Kachel größer sein als das Bild?
Nein. Die Kachel muss in beiden Richtungen in die Fläche passen. Diese Regel fängt vertauschte Breite und Höhe, eine falsche Umrechnung der Einheit oder eine Anfrage ab, die nur einen übergroßen Stempel statt eines Musters ergäbe.
Ist ein Winkel von −30 Grad dasselbe wie 330 Grad?
Ja. Jeder Winkel wird auf eine volle Umdrehung zurückgeführt, deshalb ergeben minus 30 und 330 Grad genau dasselbe Raster. Gedreht wird das ganze Raster im Uhrzeigersinn um die Bildmitte.
Verwandte Tools
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/watermark-tile-repeat-layout \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"canvas_width":800,"canvas_height":600,"tile_width":160,"tile_height":80,"spacing_x":40,"spacing_y":30,"angle_deg":-30}'const res = await fetch("https://api.kit.forhosting.com/image/watermark-tile-repeat-layout", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"canvas_width": 800,
"canvas_height": 600,
"tile_width": 160,
"tile_height": 80,
"spacing_x": 40,
"spacing_y": 30,
"angle_deg": -30
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/watermark-tile-repeat-layout",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"canvas_width": 800,
"canvas_height": 600,
"tile_width": 160,
"tile_height": 80,
"spacing_x": 40,
"spacing_y": 30,
"angle_deg": -30
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/watermark-tile-repeat-layout", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"canvas_width":800,"canvas_height":600,"tile_width":160,"tile_height":80,"spacing_x":40,"spacing_y":30,"angle_deg":-30}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"canvas_width":800,"canvas_height":600,"tile_width":160,"tile_height":80,"spacing_x":40,"spacing_y":30,"angle_deg":-30}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/watermark-tile-repeat-layout", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"canvas_width": 800,
"canvas_height": 600,
"tile_width": 160,
"tile_height": 80,
"spacing_x": 40,
"spacing_y": 30,
"angle_deg": -30
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.watermark_tile_repeat_layout",
"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. |
Technische Hinweise
Rendern und reproduzieren Sie das Layout
Setzen Sie für jeden Datensatz den Mittelpunkt des Wasserzeichens auf center_x und center_y, drehen Sie es um angle_deg um diesen Punkt und zeichnen Sie es mit der angegebenen Breite und Höhe. Der Algorithmus verwendet weder Zufallsversatz noch Uhrzeit, gespeicherten Zustand oder Netzwerkressourcen; identische Eingaben liefern stets dasselbe JSON. Der API-Preis beträgt $0.002 pro Berechnung, unabhängig von der Anzahl der Positionen innerhalb der Sicherheitsgrenze.
Technische Fragen
Was kostet der API-Aufruf?
Jede Berechnung kostet $0.002. Das Ergebnis enthält innerhalb der dokumentierten Sicherheitsgrenze die vollständige Positionsliste.
Was geschieht, wenn die Kachel größer als die Leinwand ist?
Die Anfrage liefert invalid_input, weil eine wiederholte Kachel weder Leinwandbreite noch Leinwandhöhe überschreiten darf.