Position actuelle: Accueil> Derniers articles> ImageFildPolygon () + ImageeANtialias (): Dessinez un polygone de remplissage lisse

ImageFildPolygon () + ImageeANtialias (): Dessinez un polygone de remplissage lisse

M66 2025-05-28

Lorsque vous utilisez PHP pour le traitement d'image, la bibliothèque GD fournit une multitude de fonctions pour les opérations de dessin. Par défaut, les bords peuvent sembler déchiquetés lorsque nous dessions un graphique, en particulier lorsque nous dessinons des barres obliques ou des polygones. Pour obtenir un effet graphique plus lisse, la fonction anti-alias peut être activée à l'aide de la fonction Imageantalias () . Cet article expliquera en détail comment utiliser la fonction ImageeAralias () avec la fonction ImageFildPolygon () pour dessiner un polygone de remplissage de bord lisse.

Fonction Introduction

  • Imageantalias (Ressource $ image, bool $ activé) : activer ou désactiver la fonction anti-aliasing des ressources d'image spécifiées.

  • ImageFildPolygon (Ressource $ Image, Array $ Points, int $ num_points, int $ couleur) : dessinez un polygone rempli avec la couleur donnée.

Exemple: dessinez un pentagone lisse

Voici un exemple complet de la façon de créer une image pentagonale remplie avec un effet anti-aliasing et de le sortir au format PNG.

 <?php
// Créer une toile
$width = 300;
$height = 300;
$image = imagecreatetruecolor($width, $height);

// Définir la couleur de fond sur blanc
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);

// Activer l&#39;anti-aliasing
imageantialias($image, true);

// Attribuer des couleurs
$blue = imagecolorallocate($image, 0, 102, 204);

// Points qui définissent les pentagones(Commande dans le sens horaire ou dans le sens antihoraire)
$points = [
    150, 50,   // sommet1
    250, 120,  // sommet2
    210, 230,  // sommet3
    90, 230,   // sommet4
    50, 120    // sommet5
];

// Dessin pentagones remplis
imagefilledpolygon($image, $points, 5, $blue);

// Définir l&#39;image de sortie d&#39;informations d&#39;en-tête
header('Content-Type: image/png');
imagepng($image);

// Détruiser les ressources d&#39;image
imagedestroy($image);
?>

Enregistrez le code ci-dessus en tant que polygon.php , puis visitez un navigateur tel que https://m66.net/polygon.php pour voir l'image du Pentagone lisse dessinée.

Choses à noter

  1. L'effet anti-aliasing ne prend effet que lorsque l'image créée est une véritable image couleur (créée par ImageCreateTrueColor () ).

  2. Si vous utilisez une image de palette créée par ImageCreate () , ImageeAralias () ne prendra pas effet.

  3. Les sommets des polygones doivent être correctement connectés, généralement disposés dans le sens horaire ou dans le sens antihoraire, sinon la forme peut être confuse.

  4. Bien que l'imagineAtialias () puisse réduire le dégagement, il a un certain impact sur les performances. Lorsque vous dessinez un grand nombre de graphiques complexes, vous devez peser les performances et l'effet.

Extension: enregistrer l'image dans le fichier

Si vous souhaitez enregistrer l'image en tant que fichier au lieu de le sortir directement, modifiez simplement l'imagepng ($ image) vers:

 imagepng($image, 'smooth_polygon.png');

À l'heure actuelle, l'image sera enregistrée dans le fichier lisse_polygon.png dans le répertoire actuel, auquel vous pouvez accéder, par exemple, https://m66.net/smooth_polygon.png .

Résumer

En combinant ImageeANtiAnias () et ImageFildPolygon () , nous pouvons dessiner des graphiques de polygone de remplissage plus lisses et plus beaux en PHP. Cette technologie convient à la génération de graphiques, de graphiques vectoriels, de logos et d'autres scènes qui nécessitent une douceur d'image. Avec l'aide de la bibliothèque GD, PHP convient non seulement au traitement back-end, mais aussi capable de tâches de dessin d'image de base.