Signatur
Beschreibung
imagefill() füllt den zusammenhängenden Bereich ab dem angegebenen Startpunkt (x, y) mit einer Farbe auf — vergleichbar mit dem "Eimer"-Werkzeug in Grafikeditoren. Alle Pixel, die dieselbe Farbe wie der Startpixel haben und direkt oder indirekt benachbart sind, werden mit der neuen Farbe ersetzt.
Die Farbe wird mit imagecolorallocate() oder imagecolorallocatealpha() erzeugt. Beim Einsatz transparenter Farben in Echtfarbenbildern (imagecreatetruecolor()) sollte zuvor imagealphablending() auf false gesetzt werden, damit Transparenz korrekt gespeichert wird.
Die Funktion eignet sich besonders für das schnelle Einfärben von Flächen in dynamisch generierten Grafiken, z. B. bei Diagrammen, Karten oder einfachen Bildbearbeitungsschritten. Sie wirkt ausschließlich auf zusammenhängende gleichfarbige Bereiche — Pixel einer anderen Farbe bilden eine natürliche Grenze.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $image Pflicht | GdImage | Ein gültiges GD-Bildobjekt, erzeugt z. B. mit imagecreatetruecolor() oder imagecreatefrompng(). |
|
| $x Pflicht | int | Die horizontale Koordinate des Startpunkts (0 = linke Kante). | |
| $y Pflicht | int | Die vertikale Koordinate des Startpunkts (0 = obere Kante). | |
| $color Pflicht | int | Die Füllfarbe als Farbbezeichner, erzeugt mit imagecolorallocate(). |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler (z. B. ungültige Koordinaten oder ungültiges Bildobjekt).Beispiele
Einfache Flutfüllung eines leeren Bildes
<?php
// Bild erstellen
$image = imagecreatetruecolor(200, 200);
// Farben definieren
$weiss = imagecolorallocate($image, 255, 255, 255);
$blau = imagecolorallocate($image, 0, 0, 255);
$rot = imagecolorallocate($image, 255, 0, 0);
// Hintergrund weiß füllen
imagefill($image, 0, 0, $weiss);
// Ein blaues Rechteck zeichnen
imagerectangle($image, 50, 50, 150, 150, $blau);
// Innerhalb des Rechtecks rot füllen
imagefill($image, 100, 100, $rot);
// Bild als PNG ausgeben
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
Flutfüllung mit Transparenz in einem Echtfarbbild
<?php
// Bild mit Alpha-Unterstützung erstellen
$image = imagecreatetruecolor(200, 200);
imagealphablending($image, false);
imagesavealpha($image, true);
// Transparente Hintergrundfarbe (alpha = 127 = vollständig transparent)
$transparent = imagecolorallocatealpha($image, 0, 0, 0, 127);
imagefill($image, 0, 0, $transparent);
// Roten Kreis zeichnen
$rot = imagecolorallocate($image, 220, 50, 50);
imagefilledellipse($image, 100, 100, 150, 150, $rot);
// Als PNG speichern (Transparenz bleibt erhalten)
imagepng($image, '/tmp/kreis_transparent.png');
imagedestroy($image);
echo 'Bild gespeichert.';
?>
// Wichtig · Fallstricke
Koordinaten prüfen: Liegt der Startpunkt (x, y) außerhalb der Bildgrenzen, schlägt die Funktion fehl. Koordinaten sollten stets validiert werden.
Transparenz: Bei der Verwendung von imagecolorallocatealpha() muss imagealphablending($image, false) gesetzt sein, damit Transparenz nicht mit dem bestehenden Hintergrund vermischt wird.
Performance: Bei sehr großen, zusammenhängenden Flächen kann die Flutfüllung je nach Bildgröße rechenintensiv sein. Für komplexe Fülloperationen sollten ressourcenschonende Alternativen (z. B. imagefilledrectangle() oder imagefilledpolygon()) in Betracht gezogen werden.