1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
// 创建画布
$img=imagecreate(100, 35);
// 给画布分配背景颜色,mt_rand()就是返回随机整数
$bgcolor=imagecolorallocate($img, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));
// 添加干扰线,用for循环,随机画三条
for ($i=0; $i < 3; $i++) {
// 为干扰线添加随机颜色
$linecolor=imagecolorallocate($img,mt_rand(0,255), mt_rand(0,255),mt_rand(0,255));
// 开始画干扰线
imageline($img,mt_rand(0,100),mt_rand(0,35),mt_rand(0,100),mt_rand(0,35),$linecolor); }
// 添加干扰点,for循环,随机添加25个点
for ($i=0; $i <25 ; $i++) {
//为点添加随机颜色
$diancolor=imagecolorallocate($img,mt_rand(0,255), mt_rand(0,255),mt_rand(0,255));
// 开始画点
imagesetpixel($img,mt_rand(0,100),mt_rand(0,35),$diancolor);
}
// 准备一个字符串
$rand_str='qwertyuiopasdfghjklzxcvbnm1234567890';
// 准备一个空数组
$str_arr=array();
// 循环四次返回4个随机字母或数字
for ($i=0; $i <4 ; $i++) {
// 随机取从0到字符串长度的下标
$pos=mt_rand(0,strlen($rand_str)-1);
// 一一放到数组里
$str_arr[]=$rand_str[$pos];
}
// 开启sesson,把这四个数据放进session里
session_start(); $_SESSION['info']=$str_arr;
// 准备绘制,可以用imagestring(不支持中文)或者imagettftext(支持中文但需要下载字体)
//用imagesttftext绘制
$x_start=100/5;
// foreach用于遍历输出数组,不知道循环次数
foreach ($str_arr as $key) { $fontcolor = imagecolorallocate($img, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); imagettftext($img, 20, mt_rand(-15,15), $x_start, 50/2, $fontcolor, "C:/Windows/Fonts/Verdana.TTF", $key); $x_start +=20;
//遍历后单个字符沿X轴
+20
}
// 填充
imagefill($img,0,0,$imgcolor); ob_clean();
// 输出图像格式
header('content-type:image/jpeg');
// 输出图像
imagejpeg($img);
// 摧毁图像
imagedestroy($img);
|