php使用GD函数库生成随机验证码

2019年7月15日22:02:39 发表评论 78

php需要打开GD库之后才能使用下列函数。打开的方式为php中的php.ini文件,搜索GD,去掉之前的“;”来打开GD库支持。

然后在项目的类中新建函数,粘贴下列的代码就行。HYPHP框架和ThinkPHP5已测试,所有打开GD库的都可使用。

 
/*
php验证码提高
 */
header("content-type:image/png");
// 1.生成一张透明画布 200*70
$image = imagecreatetruecolor(200,70);
// 2.给桌布上色,白色或者灰色
$white = imagecolorallocate($image,255,255,255);
imagefill($image,0,0,$white);
//随机点,生成干扰点
for($i=0;$i<200;$i++){
  $pointcolor=imagecolorallocate($image,mt_rand(50,120),mt_rand(50,120),mt_rand(50,120));
  imagesetpixel($image,mt_rand(1,199),mt_rand(1,70),$pointcolor);
}
//随机线,生成干扰线
for($i=0;$i<5;$i++){
  $linecolor=imagecolorallocate($image,mt_rand(80,220),mt_rand(80,220),mt_rand(80,220));
  imageline($image,mt_rand(1,99),mt_rand(1,99),mt_rand(1,99),mt_rand(1,99),$linecolor);
}
// 3.准备一支有颜色的笔
for ($i=0; $i < 4; $i++) { 
// 向画布上面写字
$size = 35;#文字的大小
$angle = mt_rand(-20,20);#文字偏移的度数
// 水平的计算公式:
$x = $i * 200 / 4 +15;#位置的坐标
$y = 70-(70-35)/2;//文字框体左下角y = 画布高-(画布高-字体高)/2
//颜色的随机
	$red = mt_rand(0,255);
	$green = mt_rand(0,255);
	$blue = mt_rand(0,255);
	$color = imagecolorallocate($image,$red,$green,$blue);
	$fontfile = __DIR__.'/consolab.ttf';
	$text = mt_rand(0,9); // 注意此处为验证码内容,可以由其他函数传过来进行生成
	imagettftext($image, $size, $angle, $x, $y, $color, $fontfile, $text);
}
// 导出到浏览器
imagepng($image);
// 关闭画布
imagedestroy($image);

测试图片,具体的验证码内容需要替换代码中的$text赋值。
php使用GD函数库生成随机验证码

书蓝画青

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: