Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menarik kod pengesahan grafik melalui PHP?
Dalam artikel sebelumnya, saya membawakan anda "Bagaimana untuk melukis poligon, lengkok dan elips dalam PHP? (Penjelasan grafik terperinci) ", yang memperkenalkan secara terperinci cara melukis grafik dalam PHP. Dalam artikel ini, kami akan melihat cara kami menjana kod pengesahan grafik dalam PHP. Semoga ia membantu semua orang!
Melalui artikel kami sebelum ini mengenai lukisan imej dalam PHP, kami boleh menggunakan pengetahuan untuk membuat sambungan, iaitu pengesahan grafik yang sering kami gunakan pada halaman log masuk harian. bagaimanakah kod pengesahan grafik terbentuk?
Lukis teks
Fungsi yang biasa kami gunakan untuk melukis teks ialah:
imagechar()
: Lukis aksara secara mendatar
imagecharup()
: Lukis aksara secara menegak
imagestring()
: Lukis garisan rentetan secara mendatar
imagestringup()
: Lukiskan garisan rentetan secara menegak
imagettftext()
: Gunakan fon TrueType untuk menulis teks pada imej
Antaranya, imagechar(), imagecharup(), imagestring Format sintaks () dan imagestringup() adalah sama Format sintaksnya adalah seperti berikut:
imagechar(resource $image, int $font, int $x, int $y, string $c, int $color)
Antaranya, $image mewakili kanvas yang dibuat dilakukan pada kanvas, $ fon mewakili warna fon yang dilukis, $x dan $y mewakili teks lukisan pada koordinat ($x, $y), $c mewakili aksara (atau rentetan) yang akan dilukis dan $warna mewakili warna fon yang dilukis.
Contohnya adalah seperti berikut:
<?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); ?>
Hasil output:
Fungsi lain ialah imagettftext( ), ia juga boleh melukis teks Perbezaannya ialah ia boleh menggunakan fon TrueType, iaitu sambungan dalam sistem Windows. Fon dalam format ttf mempunyai sintaks berikut:
imagettftext(resource $image, float $size, float $angle, int $x, int $y, int $color, string $fontfile, string $text)
Antaranya, $size mewakili saiz aksara, $angle mewakili sudut dan 0 darjah dalam sudut ini mewakili teks yang dibaca daripada kiri ke kanan, nilai meningkat mengikut arah lawan jam; $fontfile mewakili laluan fail fon TrueType yang akan digunakan;
Contohnya adalah seperti berikut:
<?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); ?>
Hasil keluaran:
Oleh itu, imagettftext( ) fungsi digunakan Selesai melukis teks.
Lukis kod pengesahan grafik
Selepas pembelajaran melukis teks dan imej sebelum ini, kita boleh melukis grafik berdasarkan pengetahuan yang telah kita pelajari sebelum Melukis kod pengesahan, kami sering menemui kod pengesahan grafik dalam antara muka log masuk kami, jadi mari kita lihat cara untuk menciptanya.
Pertama, mari kita lihat kesan akhir:
Untuk mencapai kesan sedemikian, anda perlu melalui beberapa langkah:
Langkah pertama ialah menyediakan kanvas yang kita perlukan iaitu mencipta kanvas. Kemudian sediakan rentetan yang ingin kita hasilkan, lukis corak gangguan pada kanvas, kemudian keluarkan imej, dan akhirnya lepaskan sumber.
Contoh adalah seperti berikut:
<?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)); } ?>
Hasil keluaran:
Pembelajaran yang disyorkan :《Tutorial video PHP》
Atas ialah kandungan terperinci Bagaimana untuk menarik kod pengesahan grafik melalui PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!