PHP 8.4.1 Released!

imagefilltoborder

(PHP 4, PHP 5, PHP 7, PHP 8)

imagefilltoborderFüllt einen Bereich mit einer bestimmten Farbe

Beschreibung

imagefilltoborder(
    GdImage $image,
    int $x,
    int $y,
    int $border_color,
    int $color
): bool

imagefilltoborder() füllt den gesamten Bereich, dessen Grenze durch die Farbe in border_color definiert wird. Der Startpunkt wird durch x und y angegeben (oben links ist 0, 0). Der Bereich wird mit der Farbe color gefüllt.

Parameter-Liste

image

Ein GdImage-Objekt, das von einer der Funktionen zur Bilderzeugung, z. B. imagecreatetruecolor(), zurückgegeben wurde.

x

x-Koordinate des Anfangspunkts.

y

y-Koordinate des Anfangspunkts.

border_color

Die Grenzfarbe. Eine Farbkennung, die mit imagecolorallocate() erzeugt wurde.

color

Die Füllfarbe. Eine Farbkennung, die mit imagecolorallocate() erzeugt wurde.

Rückgabewerte

Gibt bei Erfolg true zurück. Bei einem Fehler wird false zurückgegeben.

Changelog

Version Beschreibung
8.0.0 image erwartet nun eine GdImage-Instanz; vorher wurde eine gültige gd-Ressource erwartet.

Beispiele

Beispiel #1 Füllen einer Ellipse mit einer Farbe

<?php
// Erzeuge die Bildressource; definiere den Hintergrund als weiß
$im = imagecreatetruecolor(100, 100);
imagefilledrectangle($im, 0, 0, 100, 100, imagecolorallocate($im, 255, 255, 255));

// Zeichne eine auszufüllende Ellipse mit einem schwarzen Rand
imageellipse($im, 50, 50, 50, 50, imagecolorallocate($im, 0, 0, 0));

// Definiere die Rand- und Füllfarbe
$border = imagecolorallocate($im, 0, 0, 0);
$fill = imagecolorallocate($im, 255, 0, 0);

// Fülle die Auswahl
imagefilltoborder($im, 50, 50, $border, $fill);

// Ausgeben und Speicher freigeben
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

Ausgabe des Beispiels : Füllen einer Ellipse mit einer Farbe

Anmerkungen

Der Algorithmus merkt sich nicht explizit, welche Pixel bereits gesetzt wurden, sondern schließt dies aus der Farbe des Pixels, so dass er nicht zwischen frisch gesetzten Pixeln und bereits gesetzten Pixeln unterscheiden kann. Das bedeutet, dass die Wahl einer beliebigen Füllfarbe, die bereits im Bild verwendet wird, zu unerwünschten Ergebnissen führen kann.

add a note

User Contributed Notes 2 notes

up
2
edrad at wanadoo dot fr
21 years ago
Very useful to build a pseudo-sphere with a color gradient...

<?php
$width
= 300;
$center = $width / 2;
$colordivs = 255 / $center;
$im = @imagecreate($width, $width);
$back_color = imagecolorallocate($im, 20, 30, 40);
imagefill($im, 0, 0, $back_color);
for (
$i = 0; $i <= $center; $i++)
{
$diametre = $width - 2 * $i;
$el_color = imagecolorallocate($im, $i * $colordivs, 0, 0);
imagearc($im, $center, $center, $diametre, $diametre, 0, 360, $el_color);
imagefilltoborder($im, $center, $center, $el_color, $el_color);
}
imagepng($im);
?>

Dark Skull Software
http://www.darkskull.net
up
0
admin at worldlanguages dot tk
20 years ago
In the example below, for those with newer GD versions, it makes more sense to replace:

imagearc($im, $center, $center, $diametre, $diametre, 0, 360, $el_color);

with:

imageellipse($im, $center, $center, $diametre, $diametre, $el_color);

This is obviously simpler.
To Top