1.加载GD库
GD库是一个开放的动态创建图像、源代码公开的函数库,可以从官方网站http://www.boutell.com/gd处下载。目前,GD库支持GIF、PNG、JPEG、WBMP和XBM等多种图像格式,用于对图像的处理。
GD库在PHP 5中是默认安装的,但要激活GD库,必须修改php.ini文件。将该文件中的“;extension=php_gd2.dll”选项前的分号“;”删除,保存修改后的文件并重新启动Apache服务器即可生效。
2.创建一个简单的图像
使用GD2函数库可以实现各种图形图像的处理。创建画布是使用GD2函数库来创建图像的第一步,无论创建什么样的图像,首先都需要创建一个画布,其他操作都将在这个画布上完成。在GD2函数库中创建画布,可以通过imagecreate()函数实现。
使用imagecreate()函数创建一个宽度为200像素,高度为60像素的画布,并设置画布颜色RGB(225,66,159),最后输出一个GIF格式的图像,代码如下:
1
2
3
4
5
|
<?php $im = imagecreate(200,60); //创建一个画布 $white = imagecolorallocate( $im , 225,66,159); //设置画布的背景颜色为浅绿色 imagegif( $im ); //输出图像 ?> |
3.使用GD2函数在照片上添加文字
PHP中的GD库支持中文,但必须要以UTF-8格式的参数来进行传递,如果使用imageString()函数直接绘制中文字符串就会显示乱码,这是因为GD2对中文只能接收UTF-8编码格式,并且默认使用英文字体,所以要输出中文字符串,必须对中文字符串进行转码,并设置中文字符使用的字体。否则,输出的只能是乱码。
使用imageTTFText()函数将文字“这是一个测试”输出到图像中,代码如下:
1
2
3
4
5
6
7
8
9
10
|
<?php header( "content-type:image/jpeg" ); //定义输出为图像类型 $im =imagecreatefromjpeg( "images/photo.jpg" ); //载入照片 $textcolor =imagecolorallocate( $im ,56,73,136); //设置字体颜色为蓝色,值为RGB颜色值 $fnt = "c:/windows/fonts/simhei.ttf" ; //定义字体 $motto =iconv( "gb2312" , "utf-8" , "这是一个测试" ); //定义输出字体串 imageTTFText( $im ,220,0,480,340, $textcolor , $fnt , $motto ); //写TTF文字到图中 imagejpeg( $im ); //建立JPEG图形 imagedestroy( $im ); //结束图形,释放内存空间 ?> |
4.PHP生成验证码
创建一个checks.php文件在文件中使用GD2函数创建一个4位的验证码,并将生成的验证码保存到session中:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<?php session_start(); header( "content-type:image/png" ); //设置创建图像的格式 $image_width =70; //设置图像宽度 $image_height =18; //设置图像高度 srand(microtime()*100000); //设置随机数的种子 for ( $i =0; $i <4; $i ++){ //循环输出一个4位的随机数 $new_number .= dechex (rand(0,15)); } $_SESSION [check_checks]= $new_number ; //将获取的随机数验证码写入到SESSION变量中 $num_image =imagecreate( $image_width , $image_height ); //创建一个画布 imagecolorallocate( $num_image ,255,255,255); //设置画布的颜色 for ( $i =0; $i < strlen ( $_SESSION [check_checks]); $i ++){ //循环读取SESSION变量中的验证码 $font =mt_rand(3,5); //设置随机的字体 $x =mt_rand(1,8)+ $image_width * $i /4; //设置随机字符所在位置的X坐标 $y =mt_rand(1, $image_height /4); //设置随机字符所在位置的Y坐标 $color =imagecolorallocate( $num_image ,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200)); //设置字符的颜色 imagestring( $num_image , $font , $x , $y , $_SESSION [check_checks][ $i ], $color ); //水平输出字符 } imagepng( $num_image ); //生成PNG格式的图像 imagedestroy( $num_image ); //释放图像资源 ?> |
创建一个用户登录的表单并调用checks.php在表单中输出图像的内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
<?php session_start(); if ( $_POST [ "Submit" ]!= "" ){ $checks = $_POST [ "checks" ]; if ( $checks == "" ){ echo "<script> alert('验证码不能为空');window.location.href='index.php';</script>" ; } if ( $checks == $_SESSION [check_checks]){ echo "<script> alert('用户登录成功!');window.location.href='index.php';</script>" ; } else { echo "<script> alert('您输入的验证码不正确!');window.location.href='index.php';</script>" ; } } ?> <html> <head> <meta http-equiv= "Content-Type" content= "text/html; charset=gb2312" > <title>rand函数的应用</title> <style type= "text/css" > <!-- .STYLE1 { font-size: 12px; color: #FFFFFF; font-weight: bold; } .style2 {font-weight: bold; font-size: 12px;} --> </style> </head> <body> <form name= "form" method= "post" action= "" > <table width= "1003" border= "0" cellspacing= "0" cellpadding= "0" > <tr> <td width= "168" height= "169" background= "images/index_01.gif" > </td> <td width= "685" background= "images/index_02.gif" > </td> <td width= "150" background= "images/index_03.gif" > </td> </tr> <tr> <td width= "168" height= "311" background= "images/index_04.gif" > </td> <td background= "images/index_05.gif" ><table width= "675" height= "169" border= "0" cellpadding= "0" cellspacing= "0" > <tr> <td height= "43" align= "center" valign= "baseline" > </td> <td align= "center" valign= "middle" > </td> <td align= "center" valign= "baseline" > </td> </tr> <tr> <td width= "382" height= "24" align= "center" valign= "baseline" > </td> <td width= "207" height= "24" valign= "middle" ><span class = "style2" >用户名</span><span class = "STYLE1" > <input name= "txt_user" id= "txt_user" style= "height:20px " size= "10" > </span></td> <td width= "86" height= "24" align= "center" valign= "baseline" > </td> </tr> <tr> <td height= "24" align= "center" valign= "baseline" > </td> <td height= "24" valign= "middle" ><span class = "style2" >密码</span><span class = "STYLE1" > <input name= "txt_pwd" type= "password" id= "txt_pwd" style= "FONT-SIZE: 9pt; height:20px" size= "10" > </span></td> <td height= "24" align= "center" valign= "baseline" > </td> </tr> <tr> <td height= "24" align= "center" valign= "baseline" > </td> <td height= "24" valign= "middle" ><span class = "style2" >验证码</span><span class = "STYLE1" > <input name= "checks" size= "6" style= "height:20px " > <img src= "checks.php" width= "70" height= "18" border= "0" align= "bottom" ></span> </td> <td height= "24" align= "center" valign= "baseline" > </td> </tr> <tr> <td height= "40" align= "center" valign= "baseline" > </td> <td align= "center" valign= "baseline" > <input type= "submit" name= "Submit" value= "登录" ></td> <td align= "center" valign= "baseline" > </td> </tr> </table></td> <td background= "images/index_06.gif" > </td> </tr> <tr> <td height= "100" > </td> <td> </td> <td> </td> </tr> </table> </form> </body> </html> |
以上内容是小编给大家分享的有关php中简单的图形处理,希望大家喜欢。