`
modabobo
  • 浏览: 509360 次
文章分类
社区版块
存档分类
最新评论

GD验证码练习

 
阅读更多

因为是练习,写的有点乱。

$fsize = 4;
$code_bit = 10;
$width = (($fsize<5?$fsize:5)+4) * $code_bit+10; //$fsize+4 4为调整数字
$height = 30;

//生成随机字符串 方法一
//$chars = "0123456789ABCDEFGHIJKLMNPQRSTUVWXYZ";
//$code = '';
//for($k=0;$k<$code_bit;$k++){
//	$i = mt_rand(0,34);
//	$code.=$chars[$i];
//}

//生成随机字符串 方法二
$code = '';
for($c = 0;$c < $code_bit;$c++){
	$count = mt_rand(0,1);
	switch($count){
		case 0 : $rand_code = mt_rand(48,57); break; //数字
		case 1 : $rand_code = mt_rand(65,90); break; //大写字母
		//case 2 : $rand_code = mt_rand(97,122); break; //小写字母
	}
	$code.=sprintf("%c",$rand_code);
}

//$image = imagecreate(300,200);
$image = imagecreatetruecolor($width,$height);
//$image = imagecreatefromgif('xiaohai.gif');
header('content-type:image/png');
$backgroud = imagecolorallocate($image,180,20,20);
$white = imagecolorallocate($image,255,255,255);
$border = imagecolorallocate($image,0,0,0);
$green = imagecolorallocate($image,0,255,0);
$gray = imagecolorallocate($image,100,100,100);
imagefill($image,0,0,$backgroud);

//输出字符串到图片 整齐样式
//imagestring($image,$fsize,5,floor(($height-($fsize<5?$fsize:5)-9)/2),$code,$white); //9为调整数字

//输出字符串到图片 单字符输出
for($c = 0;$c < $code_bit;$c++){
	$x = (($width-10)/$code_bit)*$c+5;
	$y = mt_rand(5,$height-18);
	imagechar($image,$fsize,$x,$y,$code[$c],$white);
}

//中文验证
//$text = iconv("GB2312","UTF-8","测试中文");
//$font = "simhei.ttf";
//imagettftext($image,12,5,7,21,$gray,$font,$text);
//imagettftext($image,12,5,5,20,$white,$font,$text);


//imagestring($image,$fsize,5,5,$text,$white);
imagerectangle($image,0,0,$width-1,$height-1,$border);


//生成杂点
for($c=0;$c<100;$c++){
	$color = imagecolorallocate($image,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
	imagesetpixel($image,mt_rand(1,$width-2),mt_rand(1,$height-2),$color);
}


//生成线条
for($c=0;$c<1;$c++){
	$color = imagecolorallocate($image,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
	imageline($image,mt_rand(1,$width-2),mt_rand(1,$height-2),mt_rand(1,$width-2),mt_rand(1,$height-2),$color);
}
//imageline($image,15,23,56,10,$green);


//生成弧线
for($c=0;$c<1;$c++){
	$color = imagecolorallocate($image,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
	imagearc($image,mt_rand(1,$width-2),mt_rand(1,$height-2),mt_rand(1,$width-2),mt_rand(1,$height-2),mt_rand(0,360),mt_rand(0,360),$color);
}
//imagearc($image,30,10,100,20,20,80,$green);



imagepng($image);
//imagegif($image);
imagedestroy($image);

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics