Position actuelle: Accueil> Derniers articles> Solution d'implémentation pour le contenu de l'image de recadrage dans la zone polygonale (masque)

Solution d'implémentation pour le contenu de l'image de recadrage dans la zone polygonale (masque)

M66 2025-05-29

Comment utiliser la fonction ImageOpenPolygon de PHP pour implémenter une solution (masque) pour cramponner le contenu de l'image dans les zones de polygone?

introduction

Pendant le traitement de l'image, la nécessité de recadrer des zones spécifiques est très courante. Nous pouvons réaliser des images à bien des égards, l'une des méthodes courantes consiste à utiliser la fonction d' image de l'Open -Polygon en PHP pour effectuer des recadrage de la zone de polygone. Grâce à cette fonction, nous pouvons spécifier une zone de polygone avec précision et recadrer le contenu de cette zone à partir de l'image. Ensuite, nous discuterons de la façon d'utiliser la fonction d'image OpenPolygon et de combiner d'autres fonctions pour réaliser l'effet de recadrage de l'image.

Idées de base

L'idée de base de la culture de la zone de polygone est:

  1. Définissez la zone du polygone : définit la zone d'écrêtage en spécifiant chaque sommet d'un polygone.

  2. Appliquer la fonction ImageOpenPolygon : Utilisez la fonction ImageOpenPolygon pour dessiner ce polygone sur l'image.

  3. Images de recadrage : Extraire le contenu dans les zones de polygone via l'imagecrop ou d'autres méthodes de recadrage.

Voici les étapes pour implémenter cette solution.

Étape 1: Chargez l'image

Tout d'abord, nous devons charger une image, qui peut être chargée à l'aide de l'imageRereAfromJPEG de PHP, d'imageRereateFrommpng ou d'autres fonctions connexes.

 $image = imagecreatefromjpeg('your_image.jpg');  // Chargement des fichiers d'image

Étape 2: Définissez les sommets du polygone

Avant la culture, nous devons définir des sommets de polygone qui déterminent la forme et la taille de la zone courte. Un sommet doit être un tableau et chaque élément du tableau est les coordonnées d'un sommet.

 $vertices = [
    [100, 100],
    [200, 100],
    [200, 200],
    [100, 200]
];

Ce code définit quatre sommets d'un rectangle ( 100 100 , 200 100 , 200 200 , 100 200 ) pour représenter une zone rectangulaire.

Étape 3: Créez un masque transparent

Afin d'utiliser la fonction d'image OpenPolygon pour recadrer le contenu de l'image, nous devons d'abord créer un masque d'image transparent de la même taille que l'image d'origine.

 $mask = imagecreatetruecolor(imagesx($image), imagesy($image));
$transparent = imagecolorallocatealpha($mask, 0, 0, 0, 127);  // Créer un arrière-plan transparent
imagefill($mask, 0, 0, $transparent);

Étape 4: Dessinez la zone polygonale

En utilisant la fonction ImageOpenPolygon , nous pouvons dessiner un polygone sur le masque. Ici, nous spécifions la couleur du sommet et de la bordure du polygone.

 $polygonColor = imagecolorallocate($mask, 255, 255, 255);  // Bordure blanche
imagefilledpolygon($mask, array_merge(...$vertices), count($vertices), $polygonColor);  // Dessiner des polygones de remplissage

Dans cette étape, nous utilisons la fonction ImageFildPolygon pour dessiner un polygone blanc et remplir son entraide.

Étape 5: Cramez l'image à l'aide d'un masque

Maintenant que nous avons un masque de polygone, nous pouvons l'appliquer à l'image d'origine pour le recadrage. Nous appliquons le masque à l'image afin que seul le contenu dans la zone de polygone soit affiché.

 imagecopymerge($image, $mask, 0, 0, 0, 0, imagesx($image), imagesy($image), 100);

Étape 6: Sortir l'image recadrée

Enfin, sortez l'image recadrée. Vous pouvez utiliser ImageJPEG , ImagePng et d'autres fonctions pour sortir ou enregistrer des images.

 header('Content-Type: image/jpeg');
imagejpeg($image);  // Image recadrée de sortie
imagedestroy($image);  // Libérez des ressources d'image
imagedestroy($mask);  // Libérer les ressources de masque

Exemple de code complet

 <?php
$image = imagecreatefromjpeg('your_image.jpg');  // Chargement des fichiers d&#39;image

// Définir les sommets du polygone
$vertices = [
    [100, 100],
    [200, 100],
    [200, 200],
    [100, 200]
];

// Créer un masque transparent
$mask = imagecreatetruecolor(imagesx($image), imagesy($image));
$transparent = imagecolorallocatealpha($mask, 0, 0, 0, 127);
imagefill($mask, 0, 0, $transparent);

// Dessiner des polygones
$polygonColor = imagecolorallocate($mask, 255, 255, 255);
imagefilledpolygon($mask, array_merge(...$vertices), count($vertices), $polygonColor);

// Images de recadrage avec masque
imagecopymerge($image, $mask, 0, 0, 0, 0, imagesx($image), imagesy($image), 100);

// Image de sortie
header('Content-Type: image/jpeg');
imagejpeg($image);

imagedestroy($image);
imagedestroy($mask);
?>

Résumer

Grâce aux étapes ci-dessus, nous pouvons utiliser la fonction ImageOpenPolygon de PHP pour réaliser l'écrêtage des régions de polygone. Cette méthode est très flexible et peut être utilisée pour gérer les besoins de coupe complexe et convient à la coupe de la zone de différentes formes. En définissant rationnellement les sommets du polygone, vous pouvez extraire toute partie de l'image avec précision.