验证码绘制

来源:互联网 发布:lol mac国服怎么取消了 编辑:程序博客网 时间:2024/06/11 03:00

验证码绘制

1.产生验证码字符串

​ 使用ASCII码和sprintf函数生成验证码字符串

​ ASCII码对应字符如下:

​ 数字:48-57

​ 小写字母:97-122

​ 大写字母:65-90

sprintf('%c',ASCII);  //将ASCII码转为对应字符

2.绘制验证码

​ 绘制步骤:

​ (1)创建画布

​ (2)创建画笔

​ (3)填充背景色

​ (4)绘制验证码

​ (5)显示图片

​ (6)销毁图片资源

3.实例

<?phpheader('Content-Type:image/png');//echo sprintf('%c', 67);//1. 产生验证码字符串$code = '';//每次循环随机产生一个字符,拼接到$code中for($i = 0; $i < 4; $i++){    $tmp = rand(1,3);    switch ($tmp){        case 1:            //随机产生一个0-9之间的数字,拼接到$code中            $code .= sprintf('%c', rand(48, 57));            break;        case 2:            //随机产生一个A-Z之间的字符,拼接到$code中            $code .= sprintf('%c', rand(65, 90));            break;        case 3:            //随机产生一个a-z之间的字符,拼接到$code中            $code .= sprintf('%c', rand(97, 122));            break;    }}//开启session//session_start();//将验证码存入session//$_SESSION['code'] = $code;//2. 绘制验证码//① 创建画布$img = imagecreatetruecolor(90, 30);//参数:画布宽、高//② 创建画笔$red = imagecolorallocate($img, 255, 0, 0);//参数:画布资源和RGB色值$green = imagecolorallocate($img, 0, 255, 0);$blue = imagecolorallocate($img, 0, 0, 255);$white = imagecolorallocate($img, 255, 255, 255);$black = imagecolorallocate($img, 0, 0, 0);$tmp = imagecolorallocate($img, 128, 128, 128);$arr = array($red, $green, $blue, $white, $black);//③ 填充背景色imagefill($img, 0, 0, $tmp);//④ 绘制验证码for($i = 0; $i < 4; $i++){        imagettftext(        $img,    //画布资源        rand(15, 20),   //字体大小        rand(-30, 30),  //倾斜角度        10 + 18 * $i,   //绘制文字的起始X坐标点        20,             //绘制文字的起始Y坐标点        $arr[rand(0,4)],//绘制文字的颜色        'SIMSUN.TTC',   //字体文件路径        $code[$i]       //绘制的字符串    );}//⑤ 显示图片imagepng($img);//⑥ 销毁图片资源imagedestroy($img);

效果图:

这里写图片描述

原创粉丝点击