您的位置:首页 > 编程语言 > PHP开发

php复习 第九天 绘制图形验证码

2016-11-15 00:05 239 查看
ps:不知为何,博主很喜欢正则和绘制这种东西。

使用的话,把$stringText的值取出即可~

<?php
header("Content-Type:image/jpeg");//告诉浏览器现在要输出图片

#图像处理 GD库
#1)打开或创建相关函数:
#imagecreatetruecolor 创建真彩画布
#
#2)绘制图像相关函数:
#imagecolorallocate 分配颜色
#imagefill 区域填充,背景填充
#imagesetpixel 画一个单一像素
#imageline 画一条线
#imagestring 水平地画一行字符串。(可用下面的函数替代)
#imagettftext 用TrueType 字体向图像写入文本
#
#3)输出图像相关函数
#imagejpeg
#header
#imagegif
#imagepng
#imagewbmp
#
#4)释放资源
#imagedestroy
#在php中可以用GD库来对图像进行处理操作。
#由于我使用的是phpStudy集成环境,所以运行phpStudy.exe后,选择php扩展,找到gd2,打钩即可。

#案例 生成验证码:
#要求1:背景颜色可随机变换
#要求2:验证码文本为4位随机小写字母。
#要求3:充沛利用点与线来美化验证码。

$width = 140;
$height = 40;
//1.创建--真彩画布
$image = imagecreatetruecolor($width,$height);

//2.绘制
#背景颜色--rgb颜色整体数值越高,图像颜色越浅。
$colorBg = imagecolorallocate($image, rand(150,255),rand(150,255),rand(150,255));

#背景色填充
imagefill($image, $width-1, $height-1, $colorBg);

#绘制干扰点
for($i = 0;$i <= 100;$i++){
imagesetpixel($image, rand(1,$width-1), rand(1,$height-1), rand(0,150));
}

#绘制干扰线及颜色
for($i = 1; $i <= 3; $i++){
$colorLine = imagecolorallocate($image, rand(50,150),rand(50,150),rand(50,150));
$x1 = rand(1,$width/2);
$y1 = rand(1,$height/2);
$x2 = rand($width/2,$width-1);
$y2 = rand($height/2,$height-1);
imageline($image, $x1, $y1, $x2, $y2,$colorLine);//x1,y1,x2,y2坐标方式
}

#1)随机验证图案
$stringCode = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
#绘制随机验证文字、颜色
for($i = 1; $i <= 4; $i++ ){
$stringText = $stringCode[rand(0,count($stringCode)-1)];
#2)随机倾斜角度
$angle = rand(-15,15);

#3)绘制文字颜色
$colorString = imagecolorallocate($image, rand(1,100), rand(1,100), ran
b079
d(1,100));
imagettftext($image, 20, $angle, $i*20, 30, $colorString, 'font/Gisha.ttf', $stringText);

}

//3.输出图像
imagejpeg($image);

//4.释放资源
imagedestroy($imagejpeg);

?>


附:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php 图像处理