③PHP运用GD库实现图形验证码

项目码源:https://github.com/LVQINGDONG/learn_php/                 找到PHPGD_numberIMG分支下载。

一,PHP GD 库的安装与配置

找到php服务器配置文件夹下的php.ini,打开文件并找到代码“;extension=php_gd2.dll”去掉前面的分号就行“;”

这里使用wamp服务器,在wamp→bin→php→php7.0.4目录下找到了php.ini文件。

配置完成之后,测试配置是否成功:

新建一个php文件输入代码,测试:

//测试是否可以使用GD库
if(extension_loaded('gd')){
    echo "可以使用";
    foreach(gd_info() as $cate=>$value)
        echo "$cate:$value<br>";
}
else{
    echo "无法使用gd";
}
成功后浏览器显示:

二,PHP GD库的使用说明

使用PHP GD 库创建图像有四个步骤:

①创建画布。所有的绘图都需要在一个背景层上完成,以后处理图形都基于这个背景图层进行操作。

原理:画布实际上就是在内存中开辟了一块临时的内存区域,用于存储图像信息。

②绘制图像。基于之前画布创建的背景层,使用php图像函数设置图像颜色以及绘制图形。

③输出图像。完成图像绘制之后,需要将图片以某种格式保存到服务器中或者直接输出到页面显示。

④释放资源。图像输出后,存储在内存中的画布信息区域就不存在了,就需要及时清除它占用的内存资源。

三,实现图形验证码

①创建image_create1.php输入代码,先来使用PHP GD 库试着输出,代码具体功能看注释:

<?php
/**
 * Created by PhpStorm.
 * User: lenovo
 * Date: 2018/6/3
 * Time: 20:44
 */
测试是否可以使用GD库
//if(extension_loaded('gd')){
//    echo "可以使用";
//    foreach(gd_info() as $cate=>$value)
//        echo "$cate:$value<br>";
//}
//else{
//    echo "无法使用gd";
//}

header("Content-type:image/png"); //设置生成图片的格式
$im=imagecreate(120,30);   //新建画布
$bg=imagecolorallocate($im,0,0,255);  //设置背景
$sg=imagecolorallocate($im,255,255,255);  //设置前景
imagefill($im,120,30,$bg);  //填充背景
imagestring($im,7,8,5,"image create",$sg);  //填充字符串
imagepng($im);  //输出图像
imagedestroy($im); //销毁图像资源


打开浏览器看看效果:

②知道了使用方法之后,创建image_create2.php ,开始制作验证码,代码如下:

<?php
/**
 * Created by PhpStorm.
 * User: lenovo
 * Date: 2018/6/3
 * Time: 21:08
 */
header("Content-type:image/png");
$im=imagecreate(80,20);
$bg=imagecolorallocate($im,255,255,0);
$sg=imagecolorallocate($im,0,0,0);
$ag=imagecolorallocate($im,231,104,50);
imagefill($im,120,30,$bg);
$str="qwertyuipasdfghjklxcvbnm123456789QWERTYUIPASDFGHJKLXCVBNM";
$len=strlen($str)-1;
for ($i=0;$i<4;$i++){
    $str1=$str[mt_rand(0,$len)];
    imagechar($im,7,16*$i+7,2,$str1,$sg);
}
for($i=0;$i<100;$i++){
    imagesetpixel($im,rand()%80,rand()%20,$ag);
}
imagepng($im);
imagedestroy($im);

打开浏览器看效果:

到这里PHP GD验证码就做好了。

---------------------------------------------------------------------------------------------------

用到的函数及其功能:

  



猜你喜欢

转载自blog.csdn.net/li__po/article/details/80560603