Signatur
Beschreibung
imagefilledpolygon() zeichnet ein vollständig ausgefülltes Polygon auf das angegebene Bild. Die Eckpunkte des Polygons werden als flaches Array von X-/Y-Koordinatenpaaren übergeben – also [x1, y1, x2, y2, x3, y3, ...].
Die Funktion eignet sich ideal, wenn geometrische Flächen wie Dreiecke, Fünfecke, Sterne oder beliebige n-Ecke gefüllt gezeichnet werden sollen. Im Gegensatz zur Funktion imagepolygon(), die nur den Rahmen zeichnet, füllt imagefilledpolygon() das Innere vollständig mit der gewünschten Farbe.
Die Farbe muss zuvor mit imagecolorallocate() oder imagecolorallocatealpha() erzeugt worden sein. Für transparente Füllungen empfiehlt sich imagecolorallocatealpha() in Kombination mit imagealphablending().
Hinweis zu PHP 8.0: Ab PHP 8.0 entfällt der frühere dritte Parameter $num_points (Anzahl der Punkte). Die Funktion ermittelt die Punktanzahl nun automatisch aus dem Array.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $image Pflicht | GdImage | Ein GD-Bild-Objekt, das z. B. von imagecreatetruecolor() oder imagecreate() erzeugt wurde. |
|
| $points Pflicht | array | Ein flaches Array mit den X-/Y-Koordinaten der Eckpunkte des Polygons in der Form [x1, y1, x2, y2, x3, y3, ...]. Das Array muss mindestens 3 Koordinatenpaare (6 Werte) enthalten. |
|
| $color Pflicht | int | Die Füllfarbe des Polygons als Farb-Bezeichner, der zuvor mit imagecolorallocate() oder imagecolorallocatealpha() erzeugt wurde. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler (z. B. ungültiges Bild-Objekt oder zu wenige Punkte im Array).Beispiele
Gefülltes Dreieck zeichnen und als PNG ausgeben
<?php
// Bild erstellen
$image = imagecreatetruecolor(200, 200);
// Farben definieren
$weiss = imagecolorallocate($image, 255, 255, 255);
$blau = imagecolorallocate($image, 0, 80, 200);
// Hintergrund weiß füllen
imagefill($image, 0, 0, $weiss);
// Eckpunkte des Dreiecks: [x1,y1, x2,y2, x3,y3]
$punkte = [
100, 20, // obere Spitze
180, 180, // rechts unten
20, 180, // links unten
];
// Gefülltes Dreieck zeichnen
imagefilledpolygon($image, $punkte, $blau);
// PNG ausgeben
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
Gefülltes Fünfeck mit Alpha-Transparenz
<?php
$breite = 300;
$hoehe = 300;
$image = imagecreatetruecolor($breite, $hoehe);
// Alpha-Blending deaktivieren, damit Transparenz korrekt gespeichert wird
imagealphablending($image, false);
imagesavealpha($image, true);
// Transparenter Hintergrund
$transparent = imagecolorallocatealpha($image, 0, 0, 0, 127);
imagefill($image, 0, 0, $transparent);
// Halbtransparentes Rot (Alpha = 64 von 127)
$rot = imagecolorallocatealpha($image, 220, 30, 30, 64);
// Fünfeck-Koordinaten (regelmäßig)
$cx = $breite / 2;
$cy = $hoehe / 2;
$r = 120;
$punkte = [];
for ($i = 0; $i < 5; $i++) {
$winkel = deg2rad(-90 + $i * 72); // Startpunkt oben
$punkte[] = (int) round($cx + $r * cos($winkel));
$punkte[] = (int) round($cy + $r * sin($winkel));
}
imagealphablending($image, true);
imagefilledpolygon($image, $punkte, $rot);
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
// Wichtig · Fallstricke
API-Änderung in PHP 8.0: Vor PHP 8.0 war die Signatur imagefilledpolygon(GdImage $image, array $points, int $num_points, int $color): bool – der Parameter $num_points war noch erforderlich. Ab PHP 8.0 wurde dieser Parameter entfernt; die Anzahl der Punkte wird automatisch aus der Array-Länge berechnet. Code, der noch $num_points übergibt, erzeugt einen Deprecation-Hinweis in PHP 8.0 und funktioniert nicht mehr in neueren Versionen.
Das Punkte-Array muss eine gerade Anzahl von Elementen enthalten (je ein X- und ein Y-Wert pro Eckpunkt) und mindestens 6 Werte (3 Punkte). Bei einer ungeraden Anzahl oder weniger als 3 Punkten schlägt die Funktion fehl.
Das Polygon wird automatisch geschlossen – der letzte Punkt wird mit dem ersten verbunden.