Position actuelle: Accueil> Derniers articles> Le dessin de polygone combine la bibliothèque GD pour générer des images de code de vérification

Le dessin de polygone combine la bibliothèque GD pour générer des images de code de vérification

M66 2025-05-29

Dans PHP, la bibliothèque GD fournit des capacités de traitement d'image puissantes qui peuvent dessiner divers graphiques, y compris les polygones. Si vous souhaitez générer un code de vérification avec un modèle de polygone aléatoire pour améliorer l'anti-crackabilité du code de vérification, la fonction ImageOpenPolygon sera très utile.

Cet article introduira en détail comment dessiner des polygones à l'aide de la bibliothèque ImageOpenPolygon et GD et générera une image de code de vérification simple.

Exigences environnementales

  • PHP 7,0 et plus

  • Des extensions GD ont été installées et activées (vous pouvez vérifier si elles sont activées via phpinfo () )

Qu'est-ce que ImageOpenPolygon ?

ImageOpenPolygon est l'une des fonctions fournies par la bibliothèque GD pour dessiner des polygones ouverts sur une image (c'est-à-dire que les lignes ne sont pas connectées au début et à la fin). Contrairement à ImagePolygon (dessin de polygones fermés), ImageOpenPolygon est plus adapté aux scènes où des courbes ouvertes sont nécessaires, telles que les lignes d'interférences de codes de vérification.

La définition de la fonction est la suivante:

 bool imageopenpolygon(GdImage $image, array $points, int $num_points, int $color)
  • $ Image : la ressource d'image à dessiner.

  • $ Points : un tableau contenant des coordonnées ponctuelles [x0, y0, x1, y1, x2, y2, ...] .

  • $ num_points : le nombre de sommets.

  • $ couleur : couleur de ligne.

Exemple: dessinez le code de vérification du polygone

Voici un exemple complet de la façon de générer une image de code de vérification avec des polygones aléatoires:

 <?php
// Définir le type de contenu sur l&#39;image
header('Content-Type: image/png');

// Créer une toile
$width = 200;
$height = 70;
$image = imagecreatetruecolor($width, $height);

// Paramètres de couleur
$backgroundColor = imagecolorallocate($image, 255, 255, 255); // Fond blanc
$textColor = imagecolorallocate($image, 0, 0, 0);             // Police noire
$polygonColor = imagecolorallocate($image, 100, 100, 255);    // Polygone bleu

// Remplir l&#39;arrière-plan
imagefill($image, 0, 0, $backgroundColor);

// Générer le texte du code de vérification aléatoire
$characters = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789';
$captchaText = '';
for ($i = 0; $i < 5; $i++) {
    $captchaText .= $characters[rand(0, strlen($characters) - 1)];
}

// Écrire le texte du code de vérification
$fontSize = 5; // Taille de police intégrée
$x = ($width - imagefontwidth($fontSize) * strlen($captchaText)) / 2;
$y = ($height - imagefontheight($fontSize)) / 2;
imagestring($image, $fontSize, $x, $y, $captchaText, $textColor);

// Dessinez au hasard plusieurs polygones ouverts
for ($i = 0; $i < 3; $i++) {
    $points = [];
    $numPoints = rand(3, 6); // Triangle à l&#39;hexagone
    for ($j = 0; $j < $numPoints; $j++) {
        $points[] = rand(0, $width);
        $points[] = rand(0, $height);
    }
    imageopenpolygon($image, $points, $numPoints, $polygonColor);
}

// Image de sortie
imagepng($image);

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

Effet de course

Lorsque vous exécutez le fichier PHP ci-dessus, vous verrez un code de vérification avec un fond blanc, un ensemble de caractères alphanumériques aléatoires au centre et un certain nombre de polygones bleus ouverts au hasard autour de lui, ce qui augmente l'interférence de l'image.

Choses à noter

  1. Les extensions GD doivent être activées . S'il n'est pas activé, il peut être activé en installant des commandes telles que APT installer php-gd ou modifier php.ini .

  2. Amélioration de la complexité du code de vérification : le code de vérification peut être rendu plus complexe en augmentant le nombre de polygones, en modifiant la couleur et la taille graphique et en empêchant la reconnaissance automatique.

  3. Sortie sécuritaire : je n'ai pas de sortie HTML avant de générer l'image, sinon le fichier image sera corrompu.

Développer la demande

Si vous souhaitez rendre le code de vérification plus personnalisé, comme l'ajout de texte incurvé, les effets de rotation et le bruit de fond, vous pouvez utiliser des bibliothèques plus avancées telles que CAPTCHA Builder pour PHP pour le développement.