Start · Sprachen · PHP · Referenz · imagesetthickness

imagesetthickness

Funktion

Setzt die Linienstärke (in Pixeln) für nachfolgende Zeichenoperationen auf einem GD-Bildobjekt.

seit PHP 4.0.6 Kategorie: image

Signatur

imagesetthickness(GdImage $image, int $thickness): bool

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

Typ
bool
Beschreibung
Gibt 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);
(PNG-Bild mit drei Rechtecken unterschiedlicher Rahmenstärke)

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);
(PNG-Bild mit einem einfachen Liniendiagramm: dünne Achsen, dicke grüne Datenlinie)

// 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.