php图像的基本处理,验证码生成案例。

图像处理的基本步骤

php不仅可以处理文本数据,还可以创建不同格式的动态图像,比如.gif | .png | .jpeg | .wbmp | .xmp


在php中可以通过GD拓展库实现对图像的处理,不仅可以创建新图像,而且可以处理已有的图像。(php的GD拓展库有点像python的tutle库)


查看与开启gd拓展库(默认是开启的):

查看:

因为我使用的是Wamp就是Windos Apache MySQL PHP集成安装环境,
访问本机的:http://localhost/phpInfo.php可以找到db拓展库的相关信息。

版本信息


开启:
找到php.ini配置文件,找到这一行.




重启mysql服务。


创建一个图像应该完成的四个步骤

了解:在php中通过GD库来处理图像的操作,都是预先在内存中处理,操作完成以后在以文件流的形式输出到浏览器或保存在服务器的磁盘当中。


1.创建图像
所有的绘图设计都需要在一个图像上完成,往后的操作都基于这个图像。
2.绘制图像
图像创建完成以后,就可以通过这个图像资源,使用各种画像函数来设置图像的颜色、填充画布、画点、线段、各种几何图像,以及向图像添加文本等。
3.输出图像
完成整个图像的绘制之后,需要将图像以某种格式保存到服务器的文件中,或者将图像直接输出到浏览器显示给用户预览,但在图像输出之前,一定要使用header()函数发送content-type请求头来通知浏览器,告诉他,我这次发送的是一张图片,不要把我当文本给处理了。
4.释放资源


代码案例:


在服务器上生成图片。



如果想使用已存在的图片,则需要用到下面的方法,对应格式。
imagecreatefromgif() GIF格式图像
imagecreatefromgif() PNG格式图像
imagecreatefromjpeg() jpeg格式图像
imagecreatefrombmp() bmp格式图像
其他方法:
imagesx() 输出画布宽度
imagesy() 输出画布高度
getimagesize() 获取图片大小
imageline()画一条线段
imagerectangle()画一个矩形


如果我们想使用这张绘制的图片,可以通过h5的img标签引入使用。



也可以生成本地图片保存下来,而不是在服务器上(注意编码)。

    header('content-type:image/jpeg;charset="utf-8"'); //告诉浏览器这是一张图片,不然会乱码
    $img = imagecreatetruecolor(200,200); //新建一个长和宽为200真彩色图像
    $color1 = imagecolorallocate($img,50,50,50); //分配颜色方案,后三位参数为rgb
    imagefill($img,0,0,$color2); //填充区域颜色   
    if(imagejpeg($img,'MyImg.jpeg')){//生成一张jpeg格式的图片,第二个参数为图片的保存路径
        echo "图片生成成功!";
    };
    imagedestroy; //释放资源,销毁图像

生成验证码案例:
例如这种效果:


验证码背景制作:随机背景颜色,随机颜色小点



继续完善代码:(后面再给出完整的代码)


接下来我们需要绘制挡人视线的紊乱线条。



绘制验证码的文字。


imagettftext($img,14,0,0,40,$str_color,'Maker.ttf','QweFG'); //绘制文字
    //参数分别是:图像路径,字体大小,文字倾斜角度,第一个字符的左下角起始坐标,y轴起始点,颜色,字体家族路径、文字内容

会用到字体家族获取方法:我的电脑--C盘--windows--Fonts文件夹下选一种字体直接复制一份放到到项目中。



随机生成5个字符,后面会有完整代码给出。


    $alphabet = ['a','b','c','d','e','e','f','g','h','h','i','j','k','l','m','n','o','p','q','r','s','t']; //字母列表
    $str = ''; //字符初始化
    for ($i=0;$i<5;$i++) {
        $str.= $alphabet[rand(0,count($alphabet)-1)]; //随机生成5个字符拼接在一起
    };

完善,调节字符的位置和倾斜角度参数,随机倾斜角度区间,随机宽度区间,随机高度区间,让看起来更好看一点。



完整案例代码:


你可能感兴趣的:(php图像的基本处理,验证码生成案例。)