Position actuelle: Accueil> Derniers articles> La fonction ImageOpenPolygon () est-elle capable de dessiner des images qui prennent en charge les arrière-plans transparents? Analyse de la compatibilité de cette fonction dans un dessin d'image de fond transparent

La fonction ImageOpenPolygon () est-elle capable de dessiner des images qui prennent en charge les arrière-plans transparents? Analyse de la compatibilité de cette fonction dans un dessin d'image de fond transparent

M66 2025-05-18

Dans la bibliothèque GD de PHP, la fonction ImageOpenPolygon () est utilisée pour dessiner un polygone ouvert sur une image. Par rapport à ImagePolygon () (polygone fermé), ImageOpenPolygon () ne connecte pas visuellement les points de démarrage et d'extrémité automatiquement. Une exigence de développement commune consiste à dessiner différentes formes sur des images avec des arrière-plans transparents. Alors, ImageOpenPolygon () peut-il fonctionner correctement sur des images qui prennent en charge les arrière-plans transparents? Cet article analysera cela en détail.

1. Introduction à la fonction ImageOpenPolygon ()

La syntaxe de base de ImageOpenPolygon () est la suivante:

 bool imageopenpolygon(
    GdImage $image,
    array $points,
    int $num_points,
    int $color
)
  • $ Image : GD Image Resource créé par ImageCreateTrueColor () ou une fonction similaire.

  • $ Points : un éventail de coordonnées de points.

  • $ num_points : le nombre de points.

  • $ couleur : la couleur utilisée pour tracer la ligne (l'identifiant de couleur attribué sur l'image).

Remarque: l'extension GD de PHP doit être activée d'utiliser cette fonction.

2. Création d'images d'arrière-plan transparentes

Pour prendre en charge un arrière-plan transparent, vous devez généralement suivre ces étapes:

  1. Utilisez ImageCreateTrueColor () pour créer une véritable image couleur.

  2. Activer la sauvegarde des canaux alpha (en utilisant imagesVealpha () ).

  3. Remplissez une couleur d'arrière-plan complètement transparente.

Exemple:

 <?php
// Créer une image avec un arrière-plan transparent
$width = 400;
$height = 300;
$image = imagecreatetruecolor($width, $height);

// Permet de sauvegarder le completalphaInformations sur les canaux
imagesavealpha($image, true);

// Rempli de fond transparent
$transparent = imagecolorallocatealpha($image, 0, 0, 0, 127);
imagefill($image, 0, 0, $transparent);

// Définir les points de polygone
$points = [
    50, 50,
    300, 100,
    250, 250,
    100, 200
];

// Définissez la couleur de dessin
$color = imagecolorallocate($image, 255, 0, 0); // rouge

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

// Sortie vers le navigateur
header('Content-Type: image/png');
imagepng($image);

// Détruire les ressources
imagedestroy($image);
?>

Avec le code ci-dessus, nous pouvons dessiner des polygones rouges ouverts sur un arrière-plan transparent.

3. Analyse de compatibilité de ImageOpenPolygon () en arrière-plan transparent

D'après l'implémentation sous-jacente de la bibliothèque GD, ImageOpenPolygon () est essentiellement en train de dessiner un ensemble de segments de ligne et n'affectera pas l'attribut de transparence d'arrière-plan de l'image. Par conséquent, sa compatibilité sur les images d'arrière-plan transparente est bonne, ce qui se reflète dans:

  • Le canal alpha ne sera pas détruit : si l'image est activée correctement, l'image conserve toujours un arrière-plan transparent après que ImageOpenPolygon () est dessiné.

  • Le traitement des couleurs est normal : tant que la couleur de dessin attribuée n'est pas définie pour être transparente (c'est-à-dire que la transparence n'est pas spécifiée en utilisant l'imageColorAllocatealpha () ), les lignes dessinées sont opaques, tandis que l'arrière-plan reste transparent.

  • L'impact des performances est faible : par rapport aux polygones fermés, un seul segment de ligne est dessiné dans des polygones ouverts, et il n'y a pas de différence significative de performance.

Cependant, deux points doivent être prêts attention:

  • Si des images en couleur non true sont utilisées (telles que les images de palette créées par ImageCreate () ), le traitement de transparence peut être incomplet, ce qui entraîne la couleur d'arrière-plan qui n'est pas complètement transparente.

  • Lors de l'exportation vers le format JPEG, la partie transparente sera remplie en noir ou blanc. Il est recommandé d'utiliser le format PNG pour enregistrer des images d'arrière-plan transparentes.

4. Résumé

ImageOpenPolygon () peut complètement dessiner des formes sur des images avec des arrière-plans transparents, et a une bonne compatibilité et ne détruira pas l'effet transparent d'origine. Faites juste attention à activer et à enregistrer correctement le canal alpha.

Si vous devez aller plus loin, comme générer dynamiquement des graphiques complexes avec des arrière-plans transparents et les afficher sur des pages Web, vous pouvez passer l'image PNG générée via l'URL, par exemple: