日常整理PHP中简单的图形处理(经典)
本篇文章是小编日常整理的php图形处理,如何使用GD2函数在照片上添加文字,使用GD2函数创建一个4位的验证码。对本文内容感兴趣的朋友可以了解了解。
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格式的图像,代码如下:
- <?php
- $im = imagecreate(200,60); //创建一个画布
- $white = imagecolorallocate($im, 225,66,159); //设置画布的背景颜色为浅绿色
- imagegif($im); //输出图像
- ?>
3.使用GD2函数在照片上添加文字
PHP中的GD库支持中文,但必须要以UTF-8格式的参数来进行传递,如果使用imageString()函数直接绘制中文字符串就会显示乱码,这是因为GD2对中文只能接收UTF-8编码格式,并且默认使用英文字体,所以要输出中文字符串,必须对中文字符串进行转码,并设置中文字符使用的字体。否则,输出的只能是乱码。
使用imageTTFText()函数将文字“这是一个测试”输出到图像中,代码如下:
- <?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中:
- <?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在表单中输出图像的内容:
- <?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" 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" 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" 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" 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" >
- <img src="checks.php" width="70" height="18" 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中简单的图形处理,希望大家喜欢。