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中简单的图形处理,希望大家喜欢。