Signatur
Beschreibung
imagepolygon() zeichnet die Umrisslinie eines Polygons in das angegebene Bild. Die Eckpunkte werden als flaches Array aus abwechselnden X- und Y-Koordinaten übergeben, also [x1, y1, x2, y2, ...]. Der erste und der letzte Punkt werden automatisch verbunden, sodass ein geschlossenes Vieleck entsteht.
Ab PHP 8.0 hat die Funktion eine vereinfachte Signatur: Der Parameter num_points entfällt, und color wird direkt als dritter Parameter übergeben. In PHP 7 und früher war num_points noch als dritter Parameter erforderlich und color als vierter.
Die Funktion eignet sich für alle geometrischen Formen mit beliebig vielen Ecken, z. B. Dreiecke, Rauten, Sterne oder unregelmäßige Vielecke. Soll das Polygon ausgefüllt werden, kann stattdessen imagefilledpolygon() verwendet werden.
Der Farbwert muss zuvor mit imagecolorallocate() oder imagecolorallocatealpha() erstellt werden. Beim Zeichnen auf Truecolor-Bildern sind auch Transparenzeffekte möglich.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $image Pflicht | GdImage | Ein GD-Bild-Objekt, das z. B. mit imagecreatetruecolor() oder imagecreatefromjpeg() erzeugt wurde. |
|
| $points Pflicht | array | Ein flaches Array mit den Koordinaten aller Eckpunkte des Polygons im Format [x1, y1, x2, y2, ..., xN, yN]. Die Anzahl der Elemente muss gerade und mindestens 6 (3 Punkte) sein. |
|
| $num_points_or_color Pflicht | int | PHP < 8.0: Anzahl der Eckpunkte (Anzahl der Paare im points-Array). PHP ≥ 8.0: Direkt der Farbwert (Ganzzahl), den imagecolorallocate() zurückgibt. In PHP 8 entfällt der separate num_points-Parameter. |
|
| $color | int | Nur in PHP < 8.0 erforderlich: Der Farbwert als Ganzzahl, erzeugt mit imagecolorallocate(). Ab PHP 8.0 wird dieser Parameter nicht mehr verwendet. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler (z. B. ungültige Bildressource oder zu wenige Punkte).Beispiele
Einfaches Dreieck zeichnen (PHP 8)
<?php
// Bild erstellen
$image = imagecreatetruecolor(200, 200);
// Hintergrundfarbe (weiß)
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);
// Linienfarbe (rot)
$red = imagecolorallocate($image, 255, 0, 0);
// Dreieck-Koordinaten: 3 Punkte
$points = [
100, 10, // Spitze oben
190, 190, // rechts unten
10, 190, // links unten
];
// Ab PHP 8.0: kein num_points-Parameter mehr
imagepolygon($image, $points, $red);
// PNG ausgeben
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
Sechseck zeichnen und als Datei speichern (PHP 7-kompatibel)
<?php
// Bild erstellen
$image = imagecreatetruecolor(300, 300);
// Hintergrund schwarz
$black = imagecolorallocate($image, 0, 0, 0);
imagefill($image, 0, 0, $black);
// Linienfarbe gelb
$yellow = imagecolorallocate($image, 255, 220, 0);
// Sechseck berechnen (Mittelpunkt 150/150, Radius 120)
$cx = 150;
$cy = 150;
$r = 120;
$points = [];
for ($i = 0; $i < 6; $i++) {
$angle = deg2rad(60 * $i - 30);
$points[] = (int) round($cx + $r * cos($angle));
$points[] = (int) round($cy + $r * sin($angle));
}
// PHP 7-Stil: num_points als dritter Parameter
imagepolygon($image, $points, 6, $yellow);
// In Datei speichern
imagepng($image, '/tmp/hexagon.png');
imagedestroy($image);
echo 'Sechseck gespeichert.';
// Wichtig · Fallstricke
Signaturänderung in PHP 8.0: Der Parameter num_points wurde entfernt. Code, der imagepolygon($img, $pts, count($pts)/2, $color) verwendet, muss für PHP 8 auf imagepolygon($img, $pts, $color) angepasst werden. Wird die alte Signatur unter PHP 8 verwendet, interpretiert PHP den dritten Parameter als Farbe, was zu unerwarteten Ergebnissen führt.
Das points-Array muss mindestens 3 Punkte (6 Einträge) enthalten. Weniger Punkte führen dazu, dass false zurückgegeben wird und eine Warnung ausgelöst werden kann.
Für ausgefüllte Polygone steht imagefilledpolygon() zur Verfügung. Anti-Aliasing ist mit imageantialias() aktivierbar, was die Linienqualität verbessert.