La fonction de ImageFillToborder () est de remplir à un certain point de l'image jusqu'à ce que la couleur limite spécifiée soit rencontrée. Ceci est similaire au comportement des outils de seau de peinture.
Prototype de fonction:
bool imagefilltoborder(GdImage $image, int $x, int $y, int $border_color, int $color)
$ x et $ y sont les coordonnées du point de départ;
$ border_color est la couleur limite du remplissage;
$ couleur est la couleur de remplissage.
La caractéristique de cette fonction est le "remplissage du déclencheur des limites". Il commence à partir des coordonnées spécifiées et remplace tous les pixels qui n'appartiennent pas à la couleur limite par une couleur de remplissage jusqu'à ce que la limite soit rencontrée.
ImageFildRectangle () est utilisé pour dessiner une figure rectangulaire remplie. Cette fonction est plus encline au dessin des figures géométriques.
Prototype de fonction:
bool imagefilledrectangle(GdImage $image, int $x1, int $y1, int $x2, int $y2, int $color)
X1 $, Y1 $ est la coordonnée du coin supérieur gauche;
X2 $, Y2 $ sont les coordonnées du coin inférieur droit;
$ couleur est la couleur de remplissage.
Cette fonction remplit directement tous les pixels dans la zone rectangulaire spécifiée avec la couleur spécifiée, sans considérer la couleur limite et ne dépend pas du contexte du contenu de l'image.
Fonction | ImageFillToborder | ImageFildrectangle |
---|---|---|
Point de départ | Nécessite un point de départ | Spécifiez la zone de coordonnées |
Conditions de remplissage | Arrêtez-vous lorsque vous rencontrez la couleur de la bordure | Remplissez par le rectangle des coordonnées uniquement |
flexibilité | Haut, peuvent être utilisés pour les graphiques irréguliers | Bas, adapté aux rectangles réguliers |
performance | Relativement lent (recherche récursive) | Grande efficacité |
Scénarios d'application | Semblable à l'outil "seau de peinture" pour les zones de remplissage des limites | Scènes avec des structures claires telles que le dessin et la génération des graphiques |
Donnez un exemple:
Supposons que vous créiez une carte interactive qui oblige l'utilisateur à cliquer sur n'importe quelle zone et à remplir la couleur, alors ImageFillToBorder () est un choix plus approprié car il vous suffit de passer dans la position de clic et la couleur limite.
$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);
Mais si vous voulez dessiner une barre rectangulaire dans le graphique, comme une colonne dans le graphique à barres, alors ImageFildRectangle () est un choix plus simple et plus simple:
$image = imagecreatetruecolor(200, 100);
$color = imagecolorallocate($image, 0, 128, 255);
imagefilledrectangle($image, 20, 20, 80, 80, $color);
Cette question n'a pas de réponse absolue, mais dépend de vos besoins spécifiques:
Vous devez remplir des zones irrégulières du point (comme remplir la zone à l'intérieur du contour après avoir cliqué) : sélectionnez ImageFillToBorder () .
Il est nécessaire de dessiner rapidement des formes géométriques régulières (telles que les éléments de graphique, les blocs d'arrière-plan) : l'utilisation d'imageFildRectangle () est plus appropriée.
Si vous vous inquiétez des problèmes de performances et que la forme du graphique de remplissage est certain, alors ImageFildRectangle () est préféré. Il s'exécute plus rapidement et il n'y a pas de problèmes de détection des limites inattendus.