首頁 >後端開發 >php教程 >php圖形影像處理之如何產生驗證碼?

php圖形影像處理之如何產生驗證碼?

PHPz
PHPz轉載
2016-07-29 08:39:532357瀏覽

這篇文章帶給大家的內容是介紹php圖形影像處理之如何產生驗證碼?有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

現在網路上越來越離不開驗證碼了,不知道小夥伴們知不知利用php的GD函式庫就可以產生驗證碼。

先介紹幾個需要用的函數。

1.imagesetpixel()

這個函數可以進行像素點的繪製,在驗證碼中,我們稱之為🎜>

這個函數可以進行像素點的繪製,在驗證碼中,我們稱之為“雜訊”,簡直是神器。不知道小夥伴有沒有想起來驗證碼上的點點呢,就是用這個函數產生的。

2.str_shuffle()

利用這個打亂字串,然後利用substr()截取給定的位數,就可以產生一個隨機字串啦。

實例:
<?php

$img = imagecreatetruecolor(100, 50);
$black = imagecolorallocate($img, 0x00, 0x00, 0x00);
$green = imagecolorallocate($img, 0x00, 0xFF, 0x00);
$white = imagecolorallocate($img, 0xFF, 0xFF, 0xFF);
imagefill($img, 0, 0, $white);
//生成随机的验证码
$code = make(5);
imagestring($img, 5, 10, 10, $code, $black);
//加入噪点干扰
for ($i = 0; $i < 300; $i++) {
    imagesetpixel($img, rand(0, 100), rand(0, 100), $black);
    imagesetpixel($img, rand(0, 100), rand(0, 100), $green);
}
//加入线段干扰
for ($n = 0; $n <= 1; $n++) {
    imageline($img, 0, rand(0, 40), 100, rand(0, 40), $black);
    imageline($img, 0, rand(0, 40), 100, rand(0, 40), $white);
}
//输出验证码
header("content-type: image/png");
imagepng($img);
//销毁图片
imagedestroy($img);
//生产随机验证码的函数
function make($length)
{
    $code = &#39;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789&#39;;
    return substr(str_shuffle($code), 0, $length);
}


效果圖:

             

總結:以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。 php圖形影像處理之如何產生驗證碼?

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除