Dans le développement Web, les images de code de vérification sont souvent utilisées pour empêcher la soumission automatique des formulaires. PHP fournit des fonctions de traitement d'image riches pour générer des images de code de vérification. Parmi eux, ImageCreateFromgd2 () est une fonction utilisée pour créer des ressources d'image à partir d'un fichier GD2, mais il est généralement utilisé pour lire les ressources d'image existantes plutôt que de générer directement des images. Cependant, nous pouvons combiner la fonction imagegd2 () pour enregistrer l'image générée dynamiquement au format GD2, puis la lire et la traiter via ImageCreateFromgd2 () .
Cet article montrera comment générer dynamiquement une image de code de vérification avec du texte aléatoire et utiliser ImageCreateFromgd2 () pour traiter l'image.
Créer une ressource d'image
Ajouter le texte de la couleur d'arrière-plan et du code de vérification aléatoire
Enregistrer sous le format .gd2
Lisez le fichier .gd2 et sortiz-le comme l'image finale
<?php
// Step 1: Créer dynamiquement des images de code de vérification
$width = 150;
$height = 50;
$image = imagecreatetruecolor($width, $height);
// Définir les couleurs d'arrière-plan
$bgColor = imagecolorallocate($image, 255, 255, 255); // Blanc
imagefill($image, 0, 0, $bgColor);
// Définir la couleur du texte
$textColor = imagecolorallocate($image, 0, 0, 0); // noir
// Générer le contenu du code de vérification aléatoire
$captcha = '';
$chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789';
for ($i = 0; $i < 6; $i++) {
$captcha .= $chars[rand(0, strlen($chars) - 1)];
}
// Ajouter du texte à l'image
$fontSize = 5; // 1 arriver 5 Taille de la police
$x = 10;
$y = ($height - imagefontheight($fontSize)) / 2;
imagestring($image, $fontSize, $x, $y, $captcha, $textColor);
// Step 2: Enregistrer l'image en tant que .gd2 document
$gd2Path = 'captcha.gd2';
imagegd2($image, $gd2Path);
// Détruisez les ressources d'image originales
imagedestroy($image);
// Step 3: utiliser imagecreatefromgd2 Lire l'image
$gd2Image = imagecreatefromgd2($gd2Path);
// installation HTTP Image de sortie de l'en-tête
header('Content-Type: image/png');
imagepng($gd2Image);
// Nettoyer
imagedestroy($gd2Image);
?>
Veuillez vous assurer que la bibliothèque GD est activée lors de l'installation de PHP (généralement activée par défaut).
Le chemin de sauvegarde du fichier captcha.gd2 devrait avoir des autorisations d'écriture.
Vous pouvez enregistrer le contenu du code de vérification dans $ _Session pour une vérification ultérieure.
Vous pouvez intégrer cette image de code de vérification générée dynamiquement dans la forme:
<form method="post" action="https://m66.net/verify.php">
<img src="https://m66.net/captcha.php" alt="Le code de vérification">
<input type="text" name="captcha" placeholder="请输入Le code de vérification">
<input type="submit" value="soumettre">
</form>
Bien que ImageCreateFromgd2 () ne soit pas directement utilisé pour créer des images, en utilisant d'abord ImageGd2 () pour générer un fichier GD2, puis la lecture et la sortie, le but de générer des images de code de vérification dynamiquement peut être réalisée. Cette approche convient aux scènes où des caches d'image intermédiaires ou des modèles d'image sont nécessaires.
Si vous avez besoin d'images de code de vérification plus complexes (distorsions, lignes d'interférence, changements de police, etc.), vous pouvez utiliser la fonction ImageTtFText () pour combiner les polices TTF pour obtenir des fonctions plus avancées.
Besoin de moi pour démontrer une version de code de vérification avec la police TTF?