Heim > Artikel > Backend-Entwicklung > Wie zeichne ich grafischen Verifizierungscode mit PHP?
Im vorherigen Artikel habe ich Ihnen „Wie zeichnet man Polygone, Bögen und Ellipsen in PHP?“ vorgestellt. (Ausführliche Bild- und Texterklärung) “, das detailliert vorstellt, wie man Grafiken in PHP zeichnet. In diesem Artikel werfen wir einen Blick darauf, wie wir grafische Verifizierungscodes in PHP generieren. Hoffe, es hilft allen!
Durch unseren vorherigen Artikel zum Zeichnen von Bildern in PHP können wir das darin enthaltene Wissen nutzen, um eine Erweiterung zu erstellen, dh den grafischen Bestätigungscode, den wir häufig auf täglichen Anmeldeseiten verwenden. Wenn Sie lernen möchten, wie man grafische Verifizierungscodes erstellt, schauen wir uns zunächst an, wie man Text in PHP zeichnet.
Text zeichnen
Die Funktionen, die wir üblicherweise zum Zeichnen von Text verwenden, sind:
imagechar()
: Ein Zeichen horizontal zeichnen imagechar()
: 水平绘制一个字符
imagecharup()
: 垂直绘制一个字符
imagestring()
: 水平绘制一行字符串
imagestringup()
: 垂直绘制一行字符串
imagettftext()
imagecharup ()
: Zeichne ein Zeichen vertikal
imagestring()
: Zeichne eine Zeichenfolge horizontal imagestringup() code>: Zeichnen Sie eine Zeichenfolge vertikal <p><br></p>
<p><br></p>
<code>imagettftext()
: Verwenden Sie TrueType-Schriftart, um Text in das Bild zu schreiben
imagechar(resource $image, int $font, int $x, int $y, string $c, int $color)Darunter stellt $image die erstellte Leinwand dar, $font stellt die Farbe der gezeichneten Schriftart dar, $x und $y stellen den Zeichentext an der Position der Koordinaten ($x, $y) dar, $c stellt das Zeichen (oder die Zeichenfolge) dar, das gezeichnet werden soll, und $color stellt die Farbe dar gezeichnete Schriftart. Das Beispiel lautet wie folgt:
<?php $a = 'young and beautiful'; $img = imagecreate(300, 200); imagecolorallocate($img, 255, 255, 255); $green = imagecolorallocate($img, 0, 255, 0); imagestring($img, 5, 5, 50, $a, $green); imagestringup($img, 2, 200, 180, $a, $green); imagechar($img, 3, 80, 100, $a, $green); imagecharup($img, 4, 100, 100, $a, $green); header('Content-type:image/jpeg'); imagejpeg($img); imagedestroy($img); ?>Ausgabeergebnis: Es gibt auch eine Funktion namens imagettftext(), die auch Text zeichnen kann. Der Unterschied besteht darin, dass sie TrueType-Schriftarten verwenden kann Erweiterungen in Windows-Systemen mit dem Namen. Schriftart im TTF-Format, ihr Syntaxformat ist wie folgt:
imagettftext(resource $image, float $size, float $angle, int $x, int $y, int $color, string $fontfile, string $text)Darunter repräsentiert $size die Größe des Zeichens, $angle repräsentiert den Winkel, 0 Grad in diesem Winkel repräsentiert den von links nach rechts gelesenen Text und den Wert erhöht sich gegen den Uhrzeigersinn; $fontfile stellt den Pfad zur zu verwendenden TrueType-Schriftartdatei dar; $textb stellt die zu zeichnende Zeichenfolge dar. Das Beispiel lautet wie folgt:
<?php $str1 = 'young and beautiful'; $font = 'C:\Windows\Fonts\simhei.ttf'; $img = imagecreate(300, 300); imagecolorallocate($img, 255, 255, 255); $green = imagecolorallocate($img, 0, 255, 0); imagettftext($img, 16, 45, 40, 250, $green, $font, $str1); header('Content-type:image/jpeg'); imagejpeg($img); imagedestroy($img); ?>Ausgabeergebnis:
Damit ist das Zeichnen von Text durch die Funktion imagettftext() abgeschlossen.
Zeichnen von grafischen Bestätigungscodes
Nachdem wir zuvor das Zeichnen von Text und Bildern gelernt haben, können wir das zuvor erlernte Wissen verwenden, um grafische Bestätigungscodes zu zeichnen. In unserer Anmeldeschnittstelle stoßen wir häufig auf Grafiken Schauen Sie sich an, wie man es erstellt. Werfen wir zunächst einen Blick auf den Endeffekt:
🎜🎜🎜🎜🎜Um einen solchen Effekt zu erzielen, müssen Sie einige Schritte durchlaufen: 🎜🎜Der erste Schritt besteht darin, die Leinwand vorzubereiten, die wir benötigen, also zu erstellen die Leinwand. Bereiten Sie dann die Zeichenfolge vor, die wir generieren möchten, zeichnen Sie das Interferenzmuster auf die Leinwand, geben Sie dann das Bild aus und geben Sie schließlich die Ressourcen frei. 🎜🎜Das Beispiel sieht wie folgt aus: 🎜🎜<?php check_code(); function check_code($width = 100, $height = 50, $num = 4, $type = 'jpeg') { $img = imagecreate($width, $height); $string = ''; for ($i = 0; $i < $num; $i++) { $rand = mt_rand(0, 2); switch ($rand) { case 0: $ascii = mt_rand(48, 57); //0-9 break; case 1: $ascii = mt_rand(65, 90); //A-Z break; case 2: $ascii = mt_rand(97, 122); //a-z break; } //chr() $string .= sprintf('%c', $ascii); } //背景颜色 imagefilledrectangle($img, 0, 0, $width, $height, randBg($img)); //画干扰元素 for ($i = 0; $i < 50; $i++) { imagesetpixel($img, mt_rand(0, $width), mt_rand(0, $height), randPix($img)); } //写字 for ($i = 0; $i < $num; $i++) { $x = floor($width / $num) * $i + 2; $y = mt_rand(0, $height - 15); imagechar($img, 5, $x, $y, $string[$i], randPix($img)); } //imagejpeg $func = 'image' . $type; $header = 'Content-type:image/' . $type; if (function_exists($func)) { header($header); $func($img); } else { echo '图片类型不支持'; } imagedestroy($img); return $string; } //浅色的背景 function randBg($img) { return imagecolorallocate($img, mt_rand(130, 255), mt_rand(130, 255), mt_rand(130, 255)); } //深色的字或者点这些干 扰元素 function randPix($img) { return imagecolorallocate($img, mt_rand(0, 120), mt_rand(0, 120), mt_rand(0, 120)); } ?>🎜Ausgabeergebnis: 🎜🎜🎜🎜🎜🎜🎜🎜Empfohlenes Lernen: „🎜PHP-Video-Tutorial🎜“🎜
Das obige ist der detaillierte Inhalt vonWie zeichne ich grafischen Verifizierungscode mit PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!