Signatur
Beschreibung
imagesettile() definiert ein GD-Bildobjekt als Kachelmuster, das anschließend als Füllfarbe IMG_COLOR_TILED in Zeichenfunktionen wie imagefilledrectangle(), imagefilledpolygon() oder imagefill() eingesetzt werden kann. Das Kachelbild wird dabei nahtlos gekachelt (wiederholt), um den gesamten Füllbereich abzudecken.
Das Verfahren eignet sich besonders dann, wenn ein Bereich mit einem texturierten Muster gefüllt werden soll – etwa ein Hintergrund mit einem sich wiederholenden Muster oder eine grafische Oberfläche mit strukturierter Textur. Durch den Einsatz eines separaten GD-Bildes als Kachel bleibt die Größe und Auflösung des Musters vollständig flexibel.
Nach dem Aufruf von imagesettile() muss als Farbe in den nachfolgenden Zeichenfunktionen IMG_COLOR_TILED angegeben werden – andernfalls wird das Kachelbild ignoriert. Das gesetzte Kachelbild gilt so lange, bis es durch einen erneuten Aufruf von imagesettile() überschrieben oder das Bild zerstört wird.
Wichtig: Das als Kachel verwendete GD-Bild sollte nicht freigegeben (zerstört) werden, solange es noch als aktive Kachel für das Zielbild registriert ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $image Pflicht | GdImage | Das Ziel-GD-Bildobjekt, für das das Kachelmuster gesetzt werden soll. Wird typischerweise mit imagecreatetruecolor() oder imagecreate() erzeugt. |
|
| $tile Pflicht | GdImage | Das GD-Bildobjekt, das als Kachelmuster verwendet werden soll. Dieses Bild wird beim Füllen nahtlos wiederholt. Es kann ein beliebiges GD-Bild sein, also auch ein aus einer Datei geladenes Bild. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler.Beispiele
Rechteck mit einem Kachelmuster füllen
<?php
// Ziel-Bild erstellen
$image = imagecreatetruecolor(300, 300);
// Kachelbild erstellen (20x20 Pixel, einfaches Schachbrettmuster)
$tile = imagecreatetruecolor(20, 20);
$white = imagecolorallocate($tile, 255, 255, 255);
$black = imagecolorallocate($tile, 0, 0, 0);
// Schachbrettmuster zeichnen
imagefilledrectangle($tile, 0, 0, 9, 9, $white);
imagefilledrectangle($tile, 10, 0, 19, 9, $black);
imagefilledrectangle($tile, 0, 10, 9, 19, $black);
imagefilledrectangle($tile, 10, 10, 19, 19, $white);
// Kachelbild für $image setzen
imagesettile($image, $tile);
// Rechteck mit dem Kachelmuster füllen
imagefilledrectangle($image, 20, 20, 280, 280, IMG_COLOR_TILED);
// Bild ausgeben
header('Content-Type: image/png');
imagepng($image);
// Ressourcen freigeben
imagedestroy($image);
imagedestroy($tile);
?>
Geladenes Bild als Kachel verwenden
<?php
// Ziel-Bild erstellen
$image = imagecreatetruecolor(400, 400);
// Kachel aus einer Datei laden
$tile = imagecreatefrompng('pattern.png');
if ($tile === false) {
die('Kachelbild konnte nicht geladen werden.');
}
// Kachelbild setzen
imagesettile($image, $tile);
// Gesamtes Bild mit dem Kachelmuster füllen
imagefill($image, 0, 0, IMG_COLOR_TILED);
// Ausgabe als JPEG
header('Content-Type: image/jpeg');
imagejpeg($image, null, 90);
// Speicher freigeben
imagedestroy($image);
imagedestroy($tile);
?>
// Wichtig · Fallstricke
Reihenfolge beachten: imagesettile() muss zwingend vor der Zeichenfunktion aufgerufen werden, die IMG_COLOR_TILED verwendet – andernfalls ist kein Kachelmuster gesetzt.
Speicherverwaltung: Das Kachel-GD-Objekt ($tile) darf nicht per imagedestroy() freigegeben werden, solange es noch als aktive Kachel registriert ist. Eine vorzeitige Freigabe kann zu undefiniertem Verhalten oder Speicherfehlern führen.
Transparenz: Bei truecolor-Kachelbildern mit Alphakanal kann das Ergebnis vom Erwarteten abweichen. Für transparente Kacheln empfiehlt es sich, imagealphablending() und imagesavealpha() entsprechend zu konfigurieren.