Dans PHP, la fonction ImagePolygon () peut nous aider à dessiner des polygones lors du dessin de graphiques à l'aide de la bibliothèque GD. Pour rendre les graphiques plus lisses et plus beaux, la bibliothèque GD fournit la fonction ImageeRalias () pour activer ou désactiver l'anti-aliasing. Cet article discutera de la différence dans l'effet du dessin de polygones à l'aide de l'imagePolygon () avant et après avoir appelé la fonction ImageeANtialias () , et l'afficher visuellement via des exemples de code.
Imageantalias () est une fonction de la bibliothèque GD pour activer ou désactiver l'anti-aliasage des images. L'antialiasage est une technique de lissage des bords dans le traitement d'image. En mélangeant les couleurs de bord, les bords semblent moins "déchiquetés" et améliorant la qualité des graphiques.
Le prototype de fonction est le suivant:
bool imageantialias(resource $image, bool $enabled);
$ Image : Ressource d'image.
$ activé : valeur booléenne, True permet l'anti-aliasing, les fausses désactifs.
ImagePolygon () est utilisé pour dessiner un polygone composé de plusieurs points, et la signature de la fonction est la suivante:
bool imagepolygon(resource $image, array $points, int $num_points, int $color);
$ Points : un tableau de coordonnées ponctuelles, formatée dans [x1, y1, x2, y2, ..., xn, yn] .
$ num_points : le nombre de points.
$ couleur : ressource couleur.
Par défaut, les bords des polygones dessinés par GD n'ont pas d'anti-aliasing, et les bords apparaîtront plus "déchiquetés", surtout lorsque les bords de polygone sont plus importants. Après avoir appelé ImageeANtialias ($ Image, True) , les bords dessinés seront plus lisses et auront un meilleur effet visuel.
Ce qui suit est un exemple pour montrer la différence dans le dessin de polygones avant et après l'appel ImageeRalias () :
<?php
header('Content-Type: image/png');
// Créer une toile
$width = 200;
$height = 200;
$image = imagecreatetruecolor($width, $height);
// Attribuer des couleurs
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
$red = imagecolorallocate($image, 255, 0, 0);
// Remplir l'arrière-plan
imagefill($image, 0, 0, $white);
// Vertices de polygone
$points = [50, 30, 150, 30, 180, 100, 100, 170, 20, 100];
// Désactiver l'anti-aliasing,Dessiner des polygones
imageantialias($image, false);
imagepolygon($image, $points, count($points)/2, $black);
// Décalage de position de la brosse,Dessinez le deuxième polygone
// Activer l'anti-aliasing,Dessiner des polygones
imageantialias($image, true);
$points2 = [70, 50, 170, 50, 200, 120, 120, 190, 40, 120];
imagepolygon($image, $points2, count($points2)/2, $red);
// Sortir des images et des ressources de libération
imagepng($image);
imagedestroy($image);
?>
Polygones sans anti-aliasing (noir) : les bords sont évidemment déchiquetés, en particulier les barres obliques sont rugueuses.
Polygones anti-aliasing (rouge) : bords lisses et effets visuels plus doux, en particulier dans les parties biseautées de l'effet anti-aliasage.
Tous les environnements ne prennent pas en charge l'anti-aliasing, et certains environnements de serveur ou versions GD peuvent ne pas être pleinement efficaces.
L'anti-aliasing augmente la quantité de calculs lors du dessin et des graphiques complexes peuvent légèrement affecter les performances.
Imageantalias () n'est valable que pour certaines fonctions de dessin, telles que Imageline () , ImagePolygon () , etc.
Appeler la fonction ImageeANtialias () peut améliorer considérablement la douceur des bords de dessin ImagePolygon () , ce qui rend la figure plus belle. Pour les scénarios où des graphiques de haute qualité sont nécessaires, il est recommandé de permettre l'anti-aliasing, mais il doit être fait sur la base des exigences de performances et de la compatibilité réelles.