Position actuelle: Accueil> Derniers articles> ImageOpenPolygon () + ImageCopymerge () implémente la synthèse d'image

ImageOpenPolygon () + ImageCopymerge () implémente la synthèse d'image

M66 2025-05-29

En PHP, le traitement d'image est une caractéristique très pratique et puissante. En utilisant rationnellement les fonctions dans la bibliothèque GD, telles que ImageOpenPolygon () et ImageCopymerge () , les effets de synthèse d'image complexes peuvent être facilement réalisés. Cet article introduira l'utilisation de ces deux fonctions étape par étape et démontrera leur application pratique à travers un exemple simple.

1. Comprendre la fonction ImageOpenPolygon ()

ImageOpenPolygon () est une fonction utilisée pour dessiner des polygones ouverts (c'est-à-dire des lignes de polygone qui ne sont pas connectées à la fin) sur une image. La syntaxe de base est la suivante:

 bool imageopenpolygon ( GdImage $image , array $points , int $num_points , int $color )
  • $ Image : Ressource d'image.

  • $ Points : un tableau contenant des points de coordonnées, tels que [x1, y1, x2, y2, ...] .

  • $ num_points : le nombre de points.

  • $ couleur : la couleur de la ligne est dessinée.

Remarque: Contrairement à ImagePolygon () , ImageOpenPolygon () ne connecte pas automatiquement les points de démarrage et d'extrémité.

2. Comprendre la fonction ImageCopymerge ()

ImageCopymerge () est utilisé pour fusionner des parties d'une image sur une autre image et peut spécifier la transparence. La syntaxe de base est la suivante:

 bool imagecopymerge(
    GdImage $dst_image,
    GdImage $src_image,
    int $dst_x, int $dst_y,
    int $src_x, int $src_y,
    int $src_width, int $src_height,
    int $pct
)
  • $ dst_image : ressource d'image cible.

  • $ src_image : ressource d'image source.

  • $ dst_x, $ dst_y : les coordonnées du point de départ où l'image source est placée sur l'image cible.

  • $ src_x, $ src_y : le point de départ pour copier l'image source.

  • $ src_width, $ src_height : la largeur et la hauteur de la copie.

  • $ PCT : Transparence fusionnée (0 = complètement transparente, 100 = complètement opaque).

3. Exemple réel: dessinez un polygone ouvert et fusionnez-le dans l'image d'arrière-plan

Voici un exemple complet, nous utiliserons ImageOpenPolygon () pour dessiner un graphique simple et le combiner sur une image d'arrière-plan avec ImageCopymerge () :

 <?php
// Créer une image d&#39;arrière-plan
$background = imagecreatetruecolor(400, 300);
$white = imagecolorallocate($background, 255, 255, 255);
imagefill($background, 0, 0, $white);

// Créer une carte de premier plan(Graphique polygonal)
$polygon = imagecreatetruecolor(200, 200);
$transparent = imagecolorallocatealpha($polygon, 0, 0, 0, 127);
imagefill($polygon, 0, 0, $transparent);
imagesavealpha($polygon, true);

// Définissez le point d&#39;un polygone
$points = [
    50, 50,
    150, 50,
    150, 150,
    50, 150
];

// Attribuer des couleurs
$red = imagecolorallocate($polygon, 255, 0, 0);

// Dessiner des polygones ouverts
imageopenpolygon($polygon, $points, count($points) / 2, $red);

// Synthétiser les images
imagecopymerge($background, $polygon, 100, 50, 0, 0, 200, 200, 70);

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

// Libérer les ressources
imagedestroy($background);
imagedestroy($polygon);
?>

Dans cet exemple, nous créons d'abord une image avec un fond blanc, puis créons une carte de premier plan avec un arrière-plan transparent, utilisons ImageOpenPolygon () pour dessiner un contour carré ouvert rouge sur la carte de premier plan, et enfin fusionner cette carte de premier plan avec une transparence à 70% via ImagecopyMerge () .

Si vous souhaitez enregistrer le résultat final en tant que fichier au lieu de sortir vers le navigateur, remplacez simplement l'imagepng ($ background); avec:

 imagepng($background, '/path/to/your/folder/merged_image.png');

Bien sûr, ici / path / vers / votre / dossier / chemin peut être remplacé par votre propre adresse de serveur, telles que:

 imagepng($background, 'https://m66.net/uploads/merged_image.png');

4. Résumé

Grâce à la combinaison de ImageOpenPolygon () et d'imagecopymerge () , nous pouvons facilement dessiner divers graphiques ouverts et les mélangez de manière flexible sur n'importe quelle image d'arrière-plan pour obtenir de riches effets visuels. Cette technologie peut être largement utilisée dans la synthèse des avatar, la production de filigrane, le traitement des graphiques dynamiques et d'autres scénarios.