Position actuelle: Accueil> Derniers articles> Comment utiliser la fonction ImageOpenPolyGon () de PHP pour ajouter des effets d'ombre aux figures de polygone dessinées?

Comment utiliser la fonction ImageOpenPolyGon () de PHP pour ajouter des effets d'ombre aux figures de polygone dessinées?

M66 2025-06-23

Dans le traitement d'image, l'ajout d'effets d'observation aux graphiques polygonaux est une exigence commune. PHP fournit une puissante bibliothèque de fonctions de traitement graphique, où la fonction ImageOpenPolygon () est utilisée pour dessiner des polygones. Avec quelques astuces simples, nous pouvons ajouter des effets d'ombre à ces figures polygonales pour augmenter la trois dimensionnalité de la figure.

Quelle est la fonction ImageOpenPolygon ()?

Dans PHP, la fonction ImageOpenPolygon () est utilisée pour créer un polygone. Cette fonction vous permet de définir les sommets d'un polygone et de les dessiner sur une ressource d'image. Sa syntaxe de base est la suivante:

 imageopenpolygon($image, $points, $num_points, $color);
  • $ Image : Ressource d'image.

  • $ Points : un tableau contenant toutes les coordonnées de sommet d'un polygone.

  • $ num_points : le nombre de sommets du polygone.

  • $ couleur : la couleur du polygone.

Avec cette fonction, des polygones de différentes formes peuvent être dessinés et pour ajouter un effet filiaire à ces polygones, nous avons besoin d'un traitement supplémentaire.

Étapes pour ajouter des effets d'ombre

  1. Création d'une ressource d'image : Tout d'abord, nous devons créer une ressource d'image.

  2. Dessinez des polygones : utilisez ImageOpenPolygon () pour dessiner des polygones.

  3. Dessinez l'ombre : rend l'ombre légèrement décalée et remplissez-la d'une couleur sombre pour la faire ressembler à un reflet de la source lumineuse.

  4. Fusionnez les couches : fusionnez les ombres et les graphiques polygonaux pour les effets visuels.

Voici un exemple de code qui implémente ce processus:

 <?php
// Créer des ressources d&#39;image
$image = imagecreatetruecolor(400, 400);

// Attribuer des couleurs
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
$shadowColor = imagecolorallocate($image, 100, 100, 100); // Couleur de l&#39;ombre

// Remplissez la couleur d&#39;arrière-plan
imagefill($image, 0, 0, $white);

// Définir les sommets du polygone
$points = [
    100, 100, // sommet1
    200, 50,  // sommet2
    300, 150, // sommet3
    250, 250, // sommet4
    150, 200  // sommet5
];

// Dessiner des ombres(Décalé par une petite distance)
$shadowOffsetX = 10;
$shadowOffsetY = 10;
$shadowPoints = [];
foreach ($points as $key => $value) {
    if ($key % 2 == 0) {
        $shadowPoints[] = $value + $shadowOffsetX; // x Coordonnée décalée
    } else {
        $shadowPoints[] = $value + $shadowOffsetY; // y Coordonnée décalée
    }
}

// Dessiner des ombres
imageopenpolygon($image, $shadowPoints, count($shadowPoints) / 2, $shadowColor);

// Dessiner des polygones
imageopenpolygon($image, $points, count($points) / 2, $black);

// Image de sortie au navigateur
header("Content-Type: image/png");
imagepng($image);

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

Analyse de code

  1. Créer une ressource d'image : nous avons créé une ressource d'image 400x400 à l'aide d' imageReateTrueColor () et de couleurs attribuées (couleurs blanc, noir et ombre).

  2. Définition des sommets du polygone : nous définissons un polygone à cinq points avec des coordonnées de sommet stockées dans le réseau de points $ .

  3. Dessin de l'ombre : en compensant légèrement chaque coordonnée de sommet du polygone, nous obtenons les coordonnées du sommet de l'ombre. Le décalage de l'ombre est contrôlé par $ shadowoffsetx et $ shadowoffsety .

  4. Dessinez des polygones : dessinez des ombres et des polygones séparément à travers la fonction ImageOpenPolygon () , et les ombres se déplaceront légèrement pour les rendre stéréoscopiques.

  5. Image de sortie : Enfin, nous publions l'image générée au navigateur via la fonction imagepng () .