Signatur
Beschreibung
imagesetbrush() weist einer GD-Bildressource ein Pinselbild zu. Ein Pinsel ist ein kleines Bild, das anstelle einzelner Pixel beim Zeichnen von Linien, Kurven oder anderen Formen verwendet wird. Jeder Punkt der Linie wird durch das Pinselbild ersetzt, was dekorative oder texturierte Linien ermöglicht.
Nachdem der Pinsel gesetzt wurde, muss beim Zeichnen die Spezialfarbe IMG_COLOR_BRUSHED angegeben werden (z. B. als Farb-Parameter in imageline() oder imagepolygon()). Soll der Pinsel zusätzlich einem Linienstil-Muster folgen, verwendet man stattdessen IMG_COLOR_STYLEDBRUSHED.
Das Pinselbild kann beliebig groß sein – je größer, desto mehr Rechenaufwand entsteht beim Zeichnen. Für Transparenzeffekte empfiehlt sich die Verwendung von Truecolor-Bildern mit Alpha-Kanal als Pinsel, um weiche Übergänge zu erzielen.
Typische Anwendungsfälle sind dekorative Diagramm-Linien, Wasserzeichen-Muster oder künstlerische Grafik-Effekte direkt in PHP ohne externe Bibliotheken.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $image Pflicht | GdImage | Das Ziel-GD-Bild, dem der Pinsel zugewiesen wird. Wird typischerweise mit imagecreatetruecolor() oder imagecreatefromXXX() erzeugt. |
|
| $brush Pflicht | GdImage | Das Pinselbild, das beim Zeichnen mit IMG_COLOR_BRUSHED verwendet wird. Kann ebenfalls mit einer beliebigen GD-Bild-Erzeugungsfunktion erstellt werden. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler.Beispiele
Linie mit einem einfachen Kreis-Pinsel zeichnen
<?php
// Ziel-Bild erstellen
$image = imagecreatetruecolor(400, 200);
// Hintergrund weiß füllen
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);
// Pinselbild erstellen: kleiner roter Kreis (20x20 px)
$brush = imagecreatetruecolor(20, 20);
imagesavealpha($brush, true);
$transparent = imagecolorallocatealpha($brush, 0, 0, 0, 127);
imagefill($brush, 0, 0, $transparent);
$red = imagecolorallocate($brush, 220, 50, 50);
imagefilledellipse($brush, 10, 10, 18, 18, $red);
// Pinsel dem Ziel-Bild zuweisen
imagesetbrush($image, $brush);
// Linie mit Pinsel zeichnen
imageline($image, 20, 100, 380, 100, IMG_COLOR_BRUSHED);
// Bild ausgeben
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
imagedestroy($brush);
?>
Diagonale Linie mit gestyltem Pinsel (STYLEDBRUSHED)
<?php
// Ziel-Bild
$image = imagecreatetruecolor(300, 300);
$bg = imagecolorallocate($image, 240, 240, 240);
imagefill($image, 0, 0, $bg);
// Pinselbild: kleines blaues Quadrat
$brush = imagecreatetruecolor(8, 8);
$blue = imagecolorallocate($brush, 30, 100, 200);
imagefill($brush, 0, 0, $blue);
// Pinsel setzen
imagesetbrush($image, $brush);
// Stil definieren: 1 = gezeichnet, 0 = Lücke
$style = [
IMG_COLOR_BRUSHED,
IMG_COLOR_BRUSHED,
IMG_COLOR_BRUSHED,
0,
0,
];
imagesetstyle($image, $style);
// Diagonale Linie mit gestyltem Pinsel
imageline($image, 10, 10, 290, 290, IMG_COLOR_STYLEDBRUSHED);
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
imagedestroy($brush);
?>
// Wichtig · Fallstricke
Pinsel-Lebensdauer: Das Pinselbild darf nicht zerstört werden (imagedestroy()), solange es noch als aktiver Pinsel genutzt wird. Das Zerstören des Pinsel-GdImage vor dem Zeichnen führt zu undefiniertem Verhalten oder einem Fehler.
Transparenz: Truecolor-Pinselbilder mit Alpha-Kanal (über imagesavealpha() und imagecolorallocatealpha()) ergeben weiche, transparente Pinseleffekte. Palette-Bilder unterstützen nur einfache Farb-Transparenz über imagecolortransparent().
Performance: Sehr große Pinselbilder können das Rendern bei langen Linien erheblich verlangsamen, da das Pinselbild für jeden Linienpunkt gestempelt wird.