GD库生成验证码篇

 1 <?php
 2 // +----------------------------------------------------------------------
 3 // | EBACERA [ WE CAN DO IT JUST THINK IT ]
 4 // +----------------------------------------------------------------------
 5 // | Copyright (c) 2016 http://www.ebacera.com All rights reserved.
 6 // +----------------------------------------------------------------------
 7 // | Author: 重设人生 <573914456@qq.com>
 8 // +----------------------------------------------------------------------
 9 
10 //练习验证码
11 //1、生成码值
12 $char_list="1234567890ABCDEFGHIJKLMNOPQRSTUVWSYZ";//所有可能的字符集
13 $code_len=4;//验证码大小
14 $char_list_len=strlen($char_list);//码值长度
15 $code="";//保存验证码
16 for($i=1;$i<=$code_len;$i++){
17     $rand_str=mt_rand(0,$char_list_len);//随机字符串 0 - 码值的长度
18     $code .=$char_list[$rand_str];//获取字符串的下标的值
19 }
20 
21 //2、保存验证码到session
22 $_SESSION['captcha']=$code;
23 
24 //3、创建画布【用已有的图片做背景创建画布】
25 $file_name="./captcha/captcha_bg1.jpg";
26 $image=imagecreatefromjpeg($file_name);
27 
28 //4、获取字体颜色rgb格式 255,255,255为白色 【 随机字体颜色 】
29 if(mt_rand(1,5) <= 3){
30 $font_color=imagecolorallocate($image,000,000,000);//黑色
31 }else{
32 $font_color=imagecolorallocate($image,255,255,255);//白色
33 }
34 
35 //5、把验证码写入到画布上
36 $font=5;//字体
37 //获取画布宽高
38 $img_w=imagesx($image);
39 $img_h=imagesy($image);
40 //获取字体宽高
41 $font_w=imagefontwidth($font);
42 $font_h=imagefontheight($font);
43 //获取验证码宽高
44 $code_w=$font_w * $code_len;
45 $code_h=$font_h;
46 //根据验证码宽高和画布宽高求出验证码位置
47 $x=($img_w - $code_w) / 2;
48 $y=($img_h - $code_h) / 2;
49 //Imagestring(画布, 字体大小,位置X, Y,字符串内容,颜色)
50 imagestring($image,$font,$x,$y,$code,$font_color);
51 
52 //6、输出验证码
53 header("Content-type:image/jpg");
54 imagejpeg($image);
55 
56 //7、关闭资源
57 imagedestroy($image);
posted @ 2016-04-26 02:56  飞越全球  阅读(258)  评论(0编辑  收藏  举报