<?php
/**
?*?生成驗(yàn)證碼
?*?@param?integer?$type?類型0:純數(shù)字?類型1:字母?類型2:數(shù)字+字母
?*?@param?integer?$length?驗(yàn)證碼長(zhǎng)度
?*?@param?integer?$width?畫布寬度
?*?@param?integer?$height?畫布高度
?*?@return?string?驗(yàn)證碼字符串
?*/
function?generateVerify($type=2,?$length=4,?$width=100,?$height=30)?{
????//?新建一個(gè)真彩色圖像
????$image?=?imagecreatetruecolor($width,?$height);
????//?為一副圖像分配顏色
????$white?=?imagecolorallocate($image,?255,?255,?255);
????//?畫一矩形并填充
????imagefilledrectangle($image,?0,?0,?$width,?$height,?$white);
????function?randColor($image)?{
????????return?imagecolorallocate($image,?mt_rand(0,?255),?mt_rand(0,?255),?mt_rand(0,?255));
????}
????switch($type)?{
????????//?產(chǎn)生隨機(jī)數(shù)字
????????case?0:
????????????$str?=?join('',?array_rand(range(0,9),?$length));
????????????break;
????????//?產(chǎn)生隨機(jī)字母
????????case?1:
????????????$str?=?join('',?array_rand(array_flip(array_merge(range('a',?'z'),?range('A',?'Z'))),?$length));
????????????break;
????????//?產(chǎn)生隨機(jī)數(shù)字字母
????????case?2:
????????????$str?=?join('',?array_rand(array_flip(array_merge(range(0,?9),?range('a',?'z'),?range('A',?'Z'))),?$length));
????????????break;
????}
????//??用?TrueType?字體向圖像寫入文本
????for($i=0;$i<$length;$i++)?{
????????imagettftext($image,?16,?mt_rand(-30,?30),?$i*($width/$length),?mt_rand($height-15,?25),?randColor($image),?'.\font\Microsoft-YaHei-Light.ttc',?$str[$i]);
????}
????//?生成像素點(diǎn)
????for?($i=1;$i<=100;$i++)?{
????????imagesetpixel($image,?mt_rand(0,?$width),?mt_rand(0,?$height),?randColor($image));
????}
????//輸出圖像
????header('Content-type:image/png');
????imagepng($image);
????imagedestroy($image);
????return?$str;
}
generateVerify();
2020-03-16
測(cè)試了半天,導(dǎo)入字體庫(kù)的時(shí)候使用絕對(duì)路徑就好了