PHP中的图像处理解析课件.ppt

上传人:牧羊曲112 文档编号:1287176 上传时间:2022-11-04 格式:PPT 页数:63 大小:322.34KB
返回 下载 相关 举报
PHP中的图像处理解析课件.ppt_第1页
第1页 / 共63页
PHP中的图像处理解析课件.ppt_第2页
第2页 / 共63页
PHP中的图像处理解析课件.ppt_第3页
第3页 / 共63页
PHP中的图像处理解析课件.ppt_第4页
第4页 / 共63页
PHP中的图像处理解析课件.ppt_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《PHP中的图像处理解析课件.ppt》由会员分享,可在线阅读,更多相关《PHP中的图像处理解析课件.ppt(63页珍藏版)》请在三一办公上搜索。

1、PHP中的图像处理,内容介绍:,图像基础知识图像的生成步骤使用GD库函数绘制图像GD库函数综合应用实例实例简单图像验证码的制作,PHP中的图像处理内容介绍:图像基础知识,PHP中的图像处理,PHP 不仅限于只产生 HTML 的输出,还可以创建及操作多种不同格式的图像文件。PHP提供了一些内置的图像信息函数,也可以使用GD函数库创建新图像或处理已有的图像。目前GD2库支持JPEG、PNG和WBMP格式。,PHP中的图像处理 PHP 不仅限于只产,PHP中的图像处理,支持的图片格式,JPEG 是一种压缩标准的名字,通常是用来存储照片或者存储具有丰富色彩和色彩层次的图像。这种格式使用了有损压缩。PN

2、G 是可移植的网络图像,对图像采用了无损压缩标准。WBMP是专门为无线通讯设备设计的文件格式。但是并没有得到广泛应用。,PHP中的图像处理支持的图片格式JPEG 是一种压缩标准的名,PHP中的图像处理,GD2扩展库,GD扩展用于动态创建图片,使用C语言编写,开放源代码,现在版本是2.0,所以称为GD2。在windows平台下安装GD插件的具体方法如下:首先从官方主页上下载最新版本的GD库,将该文件复制到PHP安装目录的ext中,然后打开配置文件php.ini,查找;extension=php_gd2.dll,删掉前面的分号,保存退出。重新启动Web服务器。Window环境:extension=

3、php_gd2.dllLinux环境:extension=gd2.so使用phpinfo()函数查看是否已经支持GD2,PHP中的图像处理GD2扩展库GD扩展用于动态创建图片,使用, 坐标体系-介绍下图说明了php坐标系。坐标原点位于左上角,以像素为单位。像素是计算机屏幕上最小的显示单位。在php的坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。,PHP中的图像处理, 坐标体系-介绍PHP中的图像处理,PHP中的图像处理,图像的生成步骤,在PHP中创建一个图像应该完成如下所示的4个步骤:1.创建一个背景图像,

4、以后的操作都基于此背景图像(创建画布)2.在背景上绘制图像轮廓或输入文本(画出自己需要的图形)3.输出图像(也可以另存为)4.释放资源(即释放图像占用的内存资源),PHP中的图像处理图像的生成步骤在PHP中创建一个图像应该完,PHP中的图像处理, 绘图函数介绍画直线 画矩形边框画椭圆边框填充矩形填充椭圆画图片(拷贝图片的一部分)画字符串画出弧形线画出扇形-可以做出3d效果的饼状图,PHP中的图像处理 绘图函数介绍,PHP中的图像处理,我们将图像直接输出到浏览器,首先,需要告诉Web浏览器我们输出的是一个图像而不是文本或HTML。这可以通过调用header()函数指定图像的MIME类型输出完成。

5、header (content-type: image/png);,PHP中的图像处理我们将图像直接输出到浏览器,首先,需要,PHP中的图像处理,相关函数,函数:imagecreate()新建一个基于调色板的图像语法:resource imagecreate(int x_size,int y_size)说明:本函数用来建立一张全空的图形,返回一个图像标识符,参数代表了一幅大小为 x_size 和 y_size 的空白图像。单位为像素 (pixel)。,PHP中的图像处理相关函数函数:imagecreate()新,PHP中的图像处理,函数:imagedestroy( )销毁一图像语法:bool

6、imagedestroy ( resource image ) 说明:本函数释放与 image 关联的内存。image 是由图像创建函数返回的图像标识符。,PHP中的图像处理函数:imagedestroy( )销,PHP中的图像处理,?phpPHP中的图像处理,PHP中的图像处理,打开一张图片,imagecreatefromjpeg()函数,打开jpg格式图片。imagecreatefromgif()函数,打开gif格式图片。imagecreatefrompng()函数,打开png格式图片。imagecreatefromgd()函数,打开gd生成的图片。imagecreatefromgd2()

7、函数,打开gd2生成的图片。等等,PHP中的图像处理打开一张图片imagecreatefrom,PHP中的图像处理,显示和保存图片,bool imagegif/png/jpeg(resource image,string filename):以GIF/PNG格式将图像输出到浏览器或文件。默认将图片输出到浏览器;若有参数filename,则输出到该文件。该函数生成的图像格式为GIF87a 。若使用imagecolortransparent函数生成透明图像,则格式为GIF89a。,PHP中的图像处理显示和保存图片bool imagegif/,PHP中的图像处理,PHP中的图像处理?php/ 创建背

8、景图像,PHP中的图像处理,函数:imagecreatetruecolor()是新建一个真彩色图像。语法:resource imagecreatetruecolor(int x_size,int y_size)注:需要 GD 2.0.1 或更高版本,不能用于 GIF 文件格式。,PHP中的图像处理函数:imagecreatetruecol,PHP中的图像处理,函数:imagecolorallocate( ) 为一幅图像分配颜色语法: int imagecolorallocate ( resource image, int red, int green, int blue )说明:本函数用来匹配

9、图形的颜色,供其它绘图函数使用。参数 image 表示图形的资源。参数 red、green、blue 是色彩三原色,其值从 0 至 255。,PHP中的图像处理函数:imagecolorallocate,PHP中的图像处理,函数:imagefill( ) 区域填充颜色 语法:bool imagefill ( resource image, int x, int y,int color )说明: 本函数在 image 图像的坐标 x,y(图像左上角为 0, 0)处用 color 颜色执行区域填充(即与 x, y 点颜色相同且相邻的点都会被填充)。,PHP中的图像处理函数:imagefill( )

10、 区域填充,?php,要绘制复杂图像,首先要学会用一些简单元素的绘制,主要包括点元素、线框元素、填充元素、颜色元素、字型及其显示相关元素的有关操作。,PHP中的图像处理,要绘制复杂图像,首先要学会用一些简单元素的绘,绘制点元素,点元素的绘制是图像函数库中最简单的。与点有关的函数只有一个,如下所示:bool imagesetpixel(resource image,int x,int y,int color):画一个单一像素。该函数在image图像中用color颜色在x,y坐标上画一个点。参数image为图像标识,x和y分别为横、纵坐标值,color为颜色。在计算机中,一般坐标原点(0,0)位于

11、屏幕左上角,所以图像显示是上下反过来的正弦曲线,而不是在数学中所说的正弦曲线。,绘制点元素 点元素的绘制是图像函数库中最简单的。与点有关的函,?php,绘制线框元素,用绘制线框元素的函数可以更方便的绘制出一些常用的图形,如圆弧、虚线实线和多边形等。bool imagearc(resource im, int cx, int cy, int w, int h, int s, int e, int col):本函数用来画弧线。原点坐标 (0,0) 为图片的左上角,参数 cx、cy 为椭圆心坐标,参数 w 为水平轴长,参数 h 为垂直轴长,参数 s 及 e 分别为起始角与结束角,参数 col 为弧线

12、的颜色。参数 im 表示图形的标识符。0位于三点钟位置,以顺时针方向绘画。,绘制线框元素用绘制线框元素的函数可以更方便的绘制出一些常用的,bool imagedashedline(resource im,int x1,int y1,int x2,int y2,int color):绘制虚线。该函数从坐标(x1,y1)和(x2,y2)画一条虚线。参数color为颜色。一般使用imagesetstyle() 和 imageline() 的组合替代imagedashedline()函数。bool imageline(resource im,int x1,int y1,int x2,int y2,in

13、t color):绘制直线。该函数用color颜色从坐标(x1,y1)和(x2,y2)画一条直线。bool imageellipse(resource im,int cx,int cy,int w,int h,int color):在图像im上,以(cx,cy)为圆心绘制颜色为color的椭圆。椭圆的宽度和高度分别为w和h。,绘制线框元素,bool imagedashedline(resource,?phpheader(Content-type: im,bool imagepolygon(resource result,array points, int num_points, int col

14、or):绘制一个多边形。points是一个PHP数组,包含了多边形的各个顶点坐标,其中points0、points1分别为多边形第1个顶点的x、y坐标。points2、points3分别为多边形第2个顶点的x、y坐标,依此类推。 num_points为多边形的顶点数。bool imagerectangle(resource image,int x1,int y1,int x2,int y2,int color):画一个矩形。该函数用color颜色在image图像中画一个矩形,其左上角坐标为(x1,y1),右下角坐标为(x2,y2)。,绘制多边形矩形元素,bool imagepolygon(re

15、source res,?php,绘制填充元素,bool imagefilledpolygon(resource im,array points,int num_points,int color):画一个多边形并填充。 参数points是一个PHP数组,包含了多边形的各个顶点坐标,其中points0、points1分别为多边形第1个顶点的x、y坐标。points2、points3分别为多边形第2个顶点的x、y坐标,依此类推。 num_points为多边形的顶点数。bool imagefilledrectangle(resource im,int x1,int y1,int x2,int y2,i

16、nt color):画一个矩形并填充。 该函数负责填充从(x1,y1)到(x2,y2) 的矩形区域。bool imagefilledellipse(resource im,int cx,int cy,int w,int h,int color):画一个椭圆并填充。,绘制填充元素bool imagefilledpolygon(,?php,?php,绘制几何图形更多的探索,下面的例子实现了用直线画正三角形,绘制几何图形更多的探索下面的例子实现了用直线画正三角形?p,画五角星,画五角星?php,bool imagestring(resource im, int font, int x, int y,

17、 string s, int col):本函数在图片上写出水平文字。参数 font 为字形,设为 1 到 5 表示使用默认字形。参数 x、y为字符串起点坐标。参数 s 表示要写入的字符串。参数 col 表示字符串的颜色。成功返回True,否则返回False。,使用GD库函数在图片上写字,bool imagestring(resource im,?php,使用GD库函数绘制直方统计图,使用GD库函数绘制直方统计图?php,使用GD库函数创建图像的缩略图,使用GD库函数创建图像的缩略图?php,绘制填充元素,bool imagefilltoborder(resource image,int x,i

18、nt y,int border,int color);指定颜色区域内填充。 该函数从(x,y)点开始执行区域填充,直到遇到颜色为border的边界为止。值得注意的是,边界内的所有区域都会被填充。如果指定的边界色和该点颜色相同,则没有填充。如果图像中没有该边界色,则整幅图像都会被填充。,绘制填充元素bool imagefilltoborder(r,?php,?php,绘制颜色元素,使用PHP的图像函数,可以绘制特定颜色的图片,其使用方法说明如下:int imagecolortansparent(resource image,int color):将某个颜色定义为透明色。该函数将image图像中的

19、透明色设定为color。参数image是imagecreate函数返回的图像标识符。参数color是imagecolorallocate函数返回的颜色标识符。 注意:透明色是图像的一种属性,透明度不是颜色的属性。一旦设定了某个颜色为透明色,图像中之前绘制为该色的任何区域都成为透明的。,绘制颜色元素使用PHP的图像函数,可以绘制特定颜色的图片,其,int imagecolorat(resource image,int x,int y):获取图像中指定点的颜色索引值。该函数返回参数image所指定的图形中指定位置的像素的颜色索引值,索引值从0开始。如果 PHP 编译时加上了 GD 库 2.0 或更

20、高的版本并且图像是真彩色图像,则本函数以整数返回该点的 RGB 值。,;$r = ($rgb 16) ?,绘制颜色元素,int imagecolorat(resource ima,绘制颜色元素,int imagecolorclosest(resource result):计算颜色索引表中与颜色(red,green,blue)最接近者。该函数返回图像调色板中与指定的RGB值最接近的颜色。指定的颜色与调色板中的每个颜色的距离计算方法是将RGB值当成三维空间中点的坐标。int imagecolorexact(resource image,int red,int green,int blue):获取指

21、定颜色的索引值。该函数返回图像调色板中指定颜色的索引值。如果调色板中没有指定的颜色则返回-1。,绘制颜色元素int imagecolorclosest(r,int imagecolorresolve(resource image,int red,int green,int blue):获取指定颜色的索引值或有可能得到的最接近的替代值。该函数可以保证对所求的颜色返回一个颜色索引值,可以是确切值,也可以是所能得到的最接近的替代值。void imagecolorset(resource image,int index,int red,int green,int blue):给指定调色板索引设定颜色。

22、该函数将调色板中指定的索引设定为指定的颜色。对于在调色板图像中创建类似区域填充的效果很有用,避免了真填充的开销。,int imagecolorresolve(resource,array imagecolorsforindex(resource image,int index):获取颜色索引表中指定索引的颜色。该函数返回一个具有red、green、blue和alpha键名的关联数组,包含了指定颜色索引的相应值。返回的数组有3个元素,array“red”为红色强度,0255;array“green”为绿色强度,0255;array“blue”为蓝色强度,0255 。,array imagecol

23、orsforindex(reso,;print_r($color_tran);echo ;?,?php,int imagecolorstotal(resource image):获取一副图像的调色板中颜色的数目。该函数返回指定图像的调色板中的颜色数目。,int imagecolorstotal(resource,?php header(Content-type,绘制字型显示,int imagechar(resource im, int font, int x, int y, string c, int col):水平绘制一个字符。该函数将字符串c的第一个字符绘制在image指定的图像中。参数

24、font 为字形,设为 1 到 5 表示使用默认字形(数字越大字体越大),也可以加载自定义字库,font的值为imageloadfont函数的返回值。参数 x、y为字符串起点坐标。参数 col 表示字符串的颜色。成功返回1,否则返回0 。,绘制字型显示int imagechar(resource i,绘制字型显示,int imagecharup(resource im, int font, int x, int y, string c, int col):垂直绘制一个字符。该函数将字符串c的第一个字符绘制在image指定的图像中。参数 font 为字形,设为 1 到 5 表示使用默认字形,也可

25、以加载自定义字库,font的值为imageloadfont函数的返回值。参数 x、y为字符串起点坐标。参数 col 表示字符串的颜色。成功返回1,否则返回0。int imageloadfont(string file):载入新的点阵字库。该函数加载一个用户定义的位图字体并返回该字体的标识符。如果系统提供的字型不能满足要求,可以载入自定义字库。,绘制字型显示int imagecharup(resource,绘制字型显示,绘制字型显示?php$im = imagecreatet,int imagefontheight/width(int font):获取字型的高度/宽度。int imagestri

26、ngup(resource im, int font, int x, int y, string s, int col):垂直的绘制一个字符串。该函数用color颜色将字符串s绘制到image所代表的图像的(x,y)坐标处。成功返回1,否则返回0。array imagettfbbox(int size,int angle,string fontfile,string text):获取使用TrueType字体的文本范围。该函数计算并返回一个包围着TrueType 文本范围的虚拟方框的像素大小。参数size为字型的大小;angle为字型的角度;fontfile为字型文件名;text是要进行计算区域

27、大小的文字内容。返回值为数组,包括了8个元素,按逆时针顺序,前2个为左下角的x、y坐标,依次为右下角、右上角、左上角x、y坐标。 注意:这些点是相对于文本的而和角度无关,因此“左上角”指的是以水平方向看文字时其左上角。,int imagefontheight/width(int,array imagettftext(int size,int angle,int x,int y,int color,string fontfile,string text):用TrueType字体向图像写入文本。该函数将字符串text绘制到image所代表的图像上,从坐标(x,y)开始,角度为angle,颜色为co

28、lor,使用fontfile所指定的TrueType 字体文件。参数size为字型的大小;angle为字型的角度,0 度为从左向右读的文本。更高数值表示逆时针旋转。例如 90 度表示从下向上读的文本;fontfile为字型文件名;text是要进行计算区域大小的文字内容。返回值为数组,包括了8个元素,按逆时针顺序,前2个为左下角的x、y坐标,依次为右下角、右上角、左上角x、y坐标。 注意:这些点是相对于文本的而和角度无关,因此“左上角”指的是以水平方向看文字时其左上角。,array imagettftext(int size,in,?php,resource imagepsloadfont(st

29、ring filename):载入PostScript Type1字库,使用方法类似于imageloadfont函数。若成功,则返回一个合法的字体索引以备使用。否则返回false并显示一条信息说明出错的地方。,resource imagepsloadfont(strin,bool imagepsfreefont(int fontindex):释放一个PostScript Type1 字体所占用的内存。该函数的参数为imagepsloadfont函数的返回值。bool imagepsencodefont(int fontindex,string encodingfile):改变字体中字符编码矢量

30、。该函数从文件中加载字符编码矢量并用其替换指定字体的编码矢量。,array imagepstext(resource image, string text,int font,int size,int foreground,int background,int x,int y,int space,int tightness,float angle,int antialias_steps):用PostScript Type1字体将文本字符串绘制在图像上。该函数中foreground是文本的颜色,background是文本以防混色方式尝试淡入的颜色。以(x,y)坐标定义第1个字符的起点,space可

31、以用来改变字体中默认的间距值。tightness可以控制字符之间的间距。angle表示角度,size表示像素,antialias_steps可以控制防混色文本使用的颜色数目。,bool imagepsfreefont(int fonti,array imagepsbbox(string text,int font,int size,int space,int tightness,float angle):获取使用PostScript Type1字体得文本范围。参数size表示像素,space可以用来改变字体中默认的间距值。tightness可以控制字符之间的间距。angle表示角度。,arra

32、y imagepsbbox(string text,实例简单验证码的制作,要求: 1 :随机产生4个字符. 2 :0-9 ,A-Z ,a- z 3 :将四位字符作为图像显示在浏览器上.例子: 产生随机数文件:rand.php显示图片:checknumber.php,实例简单验证码的制作要求:,PHP中的图像处理,rand.php:,PHP中的图像处理rand.php:,PHP中的图像处理,checknumber.php?phpheader (Content-type: image/png);$im = imagecreate (200, 100) or die (Cannot Initiali

33、ze new GD image stream);$background_color = imagecolorallocate ($im, 255, 255, 255);$text_color = imagecolorallocate ($im, 233, 14, 91);$line_color=imagecolorallocate($im,0,0,64);imagefilledrectangle($im,30,40,100,60,$line_color);for($i=0;$i4;$i+) $number=rand(0,2);,PHP中的图像处理checknumber.php,PHP中的图像处

34、理,switch($number)case 0 : $rand_number=rand(48,57);break; /数字case 1 : $rand_number=rand(65,90);break; /大写字母case 2 : $rand_number=rand(97,122);break; /小写字母$ascii=sprintf(%c,$rand_number);$ascii_number=$ascii_number.$ascii;imagestring ($im,5,45,45,$ascii_number, $text_color);imagepng ($im);imagedestro

35、y ($im);?,PHP中的图像处理switch($number),PHP中的图像处理,访问图像的属性,array getimagesize(string filename,array imageinfo):获取图片的大小。函数返回一个具有4个单元的数组。索引 0 是图像宽度的像素值,索引 1 是图像高度的像素值,索引 2 是图像类型的标记(如表10.1所示)。这些标记与 PHP 4.3 新加的 IMAGETYPE 常量对应。索引 3 是文本字符串,内容为“height=yyy width=xxx”,可直接用于 IMG 标记。如果不能访问 filename 指定的图像或者其不是有效的图像,g

36、etimagesize() 将返回 FALSE 并产生一条 E_WARNING 级的错误。该函数不需要安装GD库就可以使用。,PHP中的图像处理访问图像的属性array getimage,PHP中的图像处理,; $temp=getimagesize($image); echo ; echo 该图像的长为:; echo $temp0; echo ; echo 该图像的宽为:; echo $temp1; echo ; echo 该图像的格式为:; switch ($temp2)case 1:echo GIF图像;break;case 2:echo JPG/JPGE图像;break;case 3:e

37、cho PNG图像;break;default:echo 未知图像格式;break; ?,PHP中的图像处理?php,PHP中的图像处理,int imagesx(resource image):获取图片的宽度。int imagesy(resource image):获取图片的高度。int imagecolorallocate(resource im,int red,int green,int blue):本函数用来匹配图形的颜色,供其它绘图函数使用。参数 im 表示图形的标识符。参数 red、green、blue 是色彩三原色,其值从 0 至 255。返回一个RGB颜色识别号。,PHP中的图像处理int imagesx(resource,PHP中的图像处理,hp绘图实际应用, 验证码为什么需要验证码? 防止恶意灌水(灌水机器人) 防止暴力破解(密码字典猜测用户名和密码),PHP中的图像处理php绘图实际应用 验证码,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号