Signatur
Beschreibung
imagesetthickness() legt fest, wie dick Linien beim Zeichnen von Formen wie Rechtecken, Ellipsen, Bögen oder freien Linien sein sollen. Der eingestellte Wert gilt für alle nachfolgenden Zeichenfunktionen, die auf dem übergebenen Bildobjekt aufgerufen werden, bis die Stärke erneut verändert wird.
Besonders nützlich ist die Funktion, wenn hervorgehobene Rahmen, fette Diagrammlinien oder deutlich sichtbare Trennlinien erzeugt werden sollen, ohne auf separate Bibliotheken zurückgreifen zu müssen. Ein Wert von 1 entspricht der Standard-Linienstärke (1 Pixel).
Die Einstellung beeinflusst unter anderem imageline(), imagerectangle(), imageellipse(), imagearc() und ähnliche Funktionen. Gefüllte Varianten (z. B. imagefilledrectangle()) ignorieren die Linienstärke, da sie die Fläche vollständig ausfüllen.
Die Linienstärke bleibt so lange aktiv, bis sie mit einem erneuten Aufruf von imagesetthickness() geändert wird. Es empfiehlt sich daher, sie nach dem Zeichnen gezielt zurückzusetzen, wenn unterschiedliche Stärken im selben Bild verwendet werden sollen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $image Pflicht | GdImage | Ein GD-Bildobjekt, das z. B. von imagecreatetruecolor() oder imagecreatefromjpeg() zurückgegeben wurde. |
|
| $thickness Pflicht | int | Die gewünschte Linienstärke in Pixeln. Ein Wert von 1 entspricht der Standard-Linienstärke. Negative Werte oder 0 können zu unvorhergesehenem Verhalten führen. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler (z. B. ungültiges Bildobjekt).Beispiele
Rahmen mit unterschiedlichen Linienstärken zeichnen
<?php
// Bild erstellen
$image = imagecreatetruecolor(300, 200);
// Farben definieren
$white = imagecolorallocate($image, 255, 255, 255);
$red = imagecolorallocate($image, 220, 30, 30);
$blue = imagecolorallocate($image, 30, 80, 220);
// Hintergrund weiß füllen
imagefilledrectangle($image, 0, 0, 299, 199, $white);
// Dünner Rahmen (1 Pixel, Standard)
imagesetthickness($image, 1);
imagerectangle($image, 10, 10, 140, 90, $red);
// Dicker Rahmen (5 Pixel)
imagesetthickness($image, 5);
imagerectangle($image, 160, 10, 290, 90, $blue);
// Sehr dicker Rahmen (10 Pixel)
imagesetthickness($image, 10);
imagerectangle($image, 10, 110, 290, 190, $red);
// Linienstärke zurücksetzen
imagesetthickness($image, 1);
// Bild als PNG ausgeben
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
Dicke Linie in einem Diagramm zeichnen
<?php
// Einfaches Liniendiagramm
$image = imagecreatetruecolor(400, 250);
$bg = imagecolorallocate($image, 240, 240, 240);
$dark = imagecolorallocate($image, 50, 50, 50);
$green = imagecolorallocate($image, 30, 160, 60);
imagefilledrectangle($image, 0, 0, 399, 249, $bg);
// Achsen dünn zeichnen (1 Pixel)
imagesetthickness($image, 1);
imageline($image, 40, 220, 380, 220, $dark); // X-Achse
imageline($image, 40, 20, 40, 220, $dark); // Y-Achse
// Datenlinie dick zeichnen (3 Pixel)
$punkte = [40 => 180, 120 => 100, 200 => 140, 280 => 60, 360 => 90];
imagesetthickness($image, 3);
$xPrev = $yPrev = null;
foreach ($punkte as $x => $y) {
if ($xPrev !== null) {
imageline($image, $xPrev, $yPrev, $x, $y, $green);
}
$xPrev = $x;
$yPrev = $y;
}
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
// Wichtig · Fallstricke
Achtung: Gefüllte Zeichenfunktionen wie imagefilledrectangle(), imagefilledellipse() oder imagefilledpolygon() verwenden die eingestellte Linienstärke nicht – sie füllen die gesamte Fläche aus und haben keinen Rand im klassischen Sinne.
Sehr große Linienstärken (z. B. über 20 Pixel) können je nach Zeichenfunktion zu Artefakten oder unerwarteten Darstellungen führen. Testen Sie das gewünschte Ergebnis in diesen Fällen sorgfältig.
Vor PHP 8.0 wurde anstelle des GdImage-Objekts eine Ressource vom Typ resource verwendet. Der Funktionsaufruf bleibt dabei gleich.