Die Funktion von ImageFillToBorder () besteht darin, an einem bestimmten Punkt im Bild zu füllen, bis die angegebene Grenzfarbe auftritt. Dies ähnelt dem Verhalten von Farbschaufelwerkzeugen.
Funktionsprototyp:
bool imagefilltoborder(GdImage $image, int $x, int $y, int $border_color, int $color)
$ x und $ y sind die Ausgangspunktkoordinaten;
$ border_color ist die Grenzfarbe der Füllung;
$ Farbe ist die Füllfarbe.
Das Merkmal dieser Funktion ist "Grenzauslöserfüllung". Es beginnt mit den angegebenen Koordinaten und ersetzt alle Pixel, die nicht zur Grenzfarbe angehören, durch eine Füllfarbe, bis die Grenze auftritt.
ImageFilledRectangle () wird verwendet, um eine gefüllte Rechteckfigur zu zeichnen. Diese Funktion neigt eher zur Zeichnung geometrischer Figuren.
Funktionsprototyp:
bool imagefilledrectangle(GdImage $image, int $x1, int $y1, int $x2, int $y2, int $color)
$ x1, $ y1 ist die obere linke Eckkoordinate;
$ x2, $ y2 sind die Koordinaten der unteren rechten Ecke;
$ Farbe ist die Füllfarbe.
Diese Funktion füllt alle Pixel direkt im angegebenen Rechteckbereich mit der angegebenen Farbe, ohne die Grenze zu berücksichtigen, und hängt nicht vom Kontext des Bildinhalts ab.
Funktion | ImageFillToBorder | BildgefüllteRectangle |
---|---|---|
Ausgangspunkt | Erfordert einen Ausgangspunkt | Koordinatenbereich angeben |
Füllbedingungen | Stoppen Sie bei der Begegnung der Grenzfarbe | Füllen Sie nur durch Koordinate des Rechtecks |
Flexibilität | Hoch, kann für unregelmäßige Grafiken verwendet werden | Niedrig, geeignet für normale Rechtecke |
Leistung | Relativ langsam (rekursive Suche) | Hohe Effizienz |
Anwendungsszenarien | Ähnlich wie das "Lackierschaufel" -Tool für Grenzfüllbereiche | Szenen mit klaren Strukturen wie Zeichnen und Erzeugen von Diagrammen |
Geben Sie ein Beispiel:
Nehmen wir an, Sie erstellen eine interaktive Karte, bei der der Benutzer auf einen beliebigen Bereich klicken und die Farbe ausfüllen muss. Anschließend ist ImageFillToBorder () eine geeignetere Wahl, da Sie nur die Farbe der Klickposition und die Grenze übergeben müssen.
$image = imagecreatefrompng("https://gitbox.net/images/map.png");
$fill_color = imagecolorallocate($image, 255, 0, 0);
$border_color = imagecolorallocate($image, 0, 0, 0);
imagefilltoborder($image, $x, $y, $border_color, $fill_color);
Wenn Sie jedoch eine rechteckige Balken in der Tabelle zeichnen möchten, z. B. eine Spalte im Balkendiagramm, dann ist ImageFilledRectangle () eine einfachere und unkompliziertere Wahl:
$image = imagecreatetruecolor(200, 100);
$color = imagecolorallocate($image, 0, 128, 255);
imagefilledrectangle($image, 20, 20, 80, 80, $color);
Diese Frage hat keine absolute Antwort, hängt jedoch von Ihren spezifischen Bedürfnissen ab:
Sie müssen unregelmäßige Bereiche aus dem Punkt füllen (z. B. das Füllen des Bereichs innerhalb der Überklammerung nach Klicken) : Wählen Sie ImageFillToBorder () aus.
Es ist notwendig, regelmäßige geometrische Formen (z. B. Diagrammelemente, Hintergrundblöcke) schnell zu zeichnen : Die Verwendung von ImageFilledRectangle () ist angemessener.
Wenn Sie sich Sorgen um Leistungsprobleme machen und die Form des Füllungsdiagramms sicher ist, wird ImageFilledRectangle () bevorzugt. Es wird schneller ausgeführt und es gibt keine unerwarteten Probleme der Grenzerkennung.