好久不写文章了,今天给大家带来php的高级功能实现技术,祝大家学业有成!
基本图像处理技术
要想使用图片处理技术,必须先到php.ini中,开启“php_gd2.dll”库——通常称为GD库!
创建画布
画布 = ImageCreate(宽, 高); //普通低执行画布
画布 = ImageCreateTrueColor(宽, 高); // 真彩色 画布
画布 = ImageCreatefromJpeg(图片文件路径)
画布 = ImageCreatefromGif(图片文件路径)
画布 = ImageCreatefromPng(图片文件路径)
画布基本操作
分配颜色:ImageColorAllocate(画布, 红,绿,蓝):
就是指设定“画图的刷子”的颜色,结果是一个“颜色值”
红绿蓝都是0-255的数字。
填充画布:ImageFill(画布, x, y, 颜色):
在画布的位置(x,y)处,“倾倒”设定颜色的“墨水”——结果是,凡是跟该点“连成一片”的区域,都染上了该颜色
画布上写字:ImageString(画布,大小,x,y,文字,颜色);
大小:只有1-5个数字可用,表示从最小到最大的文字。
x,y:是指放文字的左上角位置;
文字:就是要输出的字符串,不能使用中文。
参考另一个可以更自由书写文字的函数:imagettftext()
画直线:imageline(画布,点1x,点1y,点2x,点2y,颜色);
画矩形:imagerectangle(画布,左上角x,左上角y,右下角x,右下角y,颜色);
画弧线:imgarc(画布,中心x,中心y,椭圆宽,椭圆高,起始角度,终止角度,颜色)
获取图片尺寸:imagesx(画布),imagesy(画布)
适用于从现有图片来创建的画布。
获取图片尺寸及类型:getImageSize(图片文件路径), 结果是一个数组:array(0=>宽度, 1=>高度, 2=>类型标记,’mine’=>mime 字符串 )
举例1:
举例2:画直线,画矩形,画弧线:
举例3:
输出图片(图像)
对于一个画布资源(来源于若干个imagecreate….()函数),它要变成(表现为)图片(文件),有两种做法:
做法1:
直接输出成为一个图片文件——需要指定路径和文件名(含后缀):
imagegif( $画布, “./xxx.gif”);
imagejpeg( $画布, “./xxx.jpg”);
imagepng( $画布, “./xxx.png”);
做法2:
直接将一个php代码中的画布资源,“输出为一个请求的结果”——就是在浏览器中直接看到图片。
比如类似这样:
//结果,浏览器中看到的是一个图片——而不是 html 网页!
或:
page2.html中有一个img标签,类似这样:
<img src=”” />//结果,page2.html中看到一个图片(及其他网页内容)
特别注意:上述这种情况,都是指:一个php文件,执行的结果是一个可显示的图片——其中不能有任何html或其他文字输出!!!
结果为:
或直接浏览该php文件:
验证码技术的实现
就是用于识别是“人”还是“机器”的一种程序。
验证码其实是一个“我们的程序生成”的图片——我们的程序能够认识它——但别人的不可以。
基本原理:
页面1:
随机产生一个验证码(文本),并存入session;
该页面可以生成一张图片,图片上有该文本。
页面2:
显示page1的图片,并让人(用户)去输入看到的图片上的文本。
以及填写其他表单信息,并提交到页面3
页面3:
取出页面1存入到session的那个文本信息,跟页面2上用户输入并提交的验证码信息进行对比:
如果相等:表示是合法的提交
如果不等:表示非法提交——机器自动提交。
代码实现:
page1:valicCode.php
page2:登录的试图文件login.html
page3:登录提交后的checklogin动作(方法)中:
图片缩放技术
原理:
1,打开一个图片——即将一个图片文件载入到一个“画布”中——画布1
2,新建另一个画布(画布2):其中可以将画布1的某些“局部矩形区域”,copy出来放入当前画布的某个位置并设定大小。
3,将画布2保存为文件。
代码演示: