当前位置:首页 > PHP教程 > php图像处理 > 列表

日常整理PHP中简单的图形处理(经典)

发布:smiling 来源: PHP粉丝网  添加日期:2021-06-21 10:41:39 浏览: 评论:0 

本篇文章是小编日常整理的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格式的图像,代码如下:

  1. <?php 
  2. $im = imagecreate(200,60);           //创建一个画布 
  3. $white = imagecolorallocate($im, 225,66,159);   //设置画布的背景颜色为浅绿色 
  4. imagegif($im);                //输出图像 
  5. ?> 

3.使用GD2函数在照片上添加文字

PHP中的GD库支持中文,但必须要以UTF-8格式的参数来进行传递,如果使用imageString()函数直接绘制中文字符串就会显示乱码,这是因为GD2对中文只能接收UTF-8编码格式,并且默认使用英文字体,所以要输出中文字符串,必须对中文字符串进行转码,并设置中文字符使用的字体。否则,输出的只能是乱码。

使用imageTTFText()函数将文字“这是一个测试”输出到图像中,代码如下:

  1. <?php 
  2. header("content-type:image/jpeg");    //定义输出为图像类型 
  3. $im=imagecreatefromjpeg("images/photo.jpg");    //载入照片 
  4. $textcolor=imagecolorallocate($im,56,73,136);//设置字体颜色为蓝色,值为RGB颜色值 
  5. $fnt="c:/windows/fonts/simhei.ttf";   //定义字体 
  6. $motto=iconv("gb2312","utf-8","这是一个测试");   //定义输出字体串 
  7. imageTTFText($im,220,0,480,340,$textcolor,$fnt,$motto);   //写TTF文字到图中 
  8. imagejpeg($im);    //建立JPEG图形 
  9. imagedestroy($im);  //结束图形,释放内存空间 
  10. ?> 

4.PHP生成验证码

创建一个checks.php文件在文件中使用GD2函数创建一个4位的验证码,并将生成的验证码保存到session中:

  1. <?php 
  2. session_start(); 
  3. header("content-type:image/png");    //设置创建图像的格式 
  4. $image_width=70;           //设置图像宽度 
  5. $image_height=18;           //设置图像高度 
  6. srand(microtime()*100000);        //设置随机数的种子 
  7. for($i=0;$i<4;$i++){         //循环输出一个4位的随机数 
  8.   $new_number.=dechex(rand(0,15)); 
  9. $_SESSION[check_checks]=$new_number;  //将获取的随机数验证码写入到SESSION变量中    
  10.  
  11. $num_image=imagecreate($image_width,$image_height); //创建一个画布 
  12. imagecolorallocate($num_image,255,255,255);     //设置画布的颜色 
  13. for($i=0;$i<strlen($_SESSION[check_checks]);$i++){ //循环读取SESSION变量中的验证码 
  14.   $font=mt_rand(3,5);                //设置随机的字体 
  15.   $x=mt_rand(1,8)+$image_width*$i/4;        //设置随机字符所在位置的X坐标 
  16.   $y=mt_rand(1,$image_height/4);          //设置随机字符所在位置的Y坐标 
  17.   $color=imagecolorallocate($num_image,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200));    //设置字符的颜色 
  18.   imagestring($num_image,$font,$x,$y,$_SESSION[check_checks][$i],$color);           //水平输出字符 
  19. imagepng($num_image);         //生成PNG格式的图像 
  20. imagedestroy($num_image);       //释放图像资源 
  21. ?> 

创建一个用户登录的表单并调用checks.php在表单中输出图像的内容:

  1. <?php 
  2. session_start(); 
  3. if($_POST["Submit"]!=""){ 
  4. $checks=$_POST["checks"]; 
  5. if($checks==""){ 
  6. echo "<script> alert('验证码不能为空');window.location.href='index.php';</script>"; 
  7. if($checks==$_SESSION[check_checks]){ 
  8.   echo "<script> alert('用户登录成功!');window.location.href='index.php';</script>"; 
  9. }else{ 
  10.   echo "<script> alert('您输入的验证码不正确!');window.location.href='index.php';</script>"; 
  11. ?> 
  12. <html> 
  13. <head> 
  14. <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
  15. <title>rand函数的应用</title> 
  16. <style type="text/css"> 
  17. <!-- 
  18. .STYLE1 { 
  19.   font-size: 12px; 
  20.   color: #FFFFFF; 
  21.   font-weight: bold; 
  22. .style2 {font-weight: bold; font-size: 12px;} 
  23. --> 
  24. </style> 
  25. </head> 
  26. <body> 
  27. <form name="form" method="post" action=""> 
  28.  <table width="1003" border="0" cellspacing="0" cellpadding="0"> 
  29.   <tr> 
  30.    <td width="168" height="169" background="images/index_01.gif">&nbsp;</td> 
  31.    <td width="685" background="images/index_02.gif">&nbsp;</td> 
  32.    <td width="150" background="images/index_03.gif">&nbsp;</td> 
  33.   </tr> 
  34.   <tr> 
  35.    <td width="168" height="311" background="images/index_04.gif">&nbsp;</td> 
  36.    <td background="images/index_05.gif"><table width="675" height="169" border="0" cellpadding="0" cellspacing="0"> 
  37.     <tr> 
  38.      <td height="43" align="center" valign="baseline">&nbsp;</td> 
  39.      <td align="center" valign="middle">&nbsp;</td> 
  40.      <td align="center" valign="baseline">&nbsp;</td> 
  41.     </tr> 
  42.     <tr> 
  43.      <td width="382" height="24" align="center" valign="baseline">&nbsp;</td> 
  44.      <td width="207" height="24" valign="middle"><span class="style2">用户名</span><span class="STYLE1"> 
  45.       <input name="txt_user" id="txt_user" style="height:20px " size="10"> 
  46.        </span></td> 
  47.      <td width="86" height="24" align="center" valign="baseline">&nbsp;</td> 
  48.     </tr> 
  49.     <tr> 
  50.      <td height="24" align="center" valign="baseline">&nbsp;</td> 
  51.      <td height="24" valign="middle"><span class="style2">密码</span><span class="STYLE1"> 
  52.      <input name="txt_pwd" type="password" id="txt_pwd" style="FONT-SIZE: 9pt; height:20px" size="10"> 
  53.      </span></td> 
  54.      <td height="24" align="center" valign="baseline">&nbsp;</td> 
  55.     </tr> 
  56.     <tr> 
  57.      <td height="24" align="center" valign="baseline">&nbsp;</td> 
  58.      <td height="24" valign="middle"><span class="style2">验证码</span><span class="STYLE1"> 
  59.      <input name="checks" size="6" style="height:20px "> 
  60.      <img src="checks.php" width="70" height="18" border="0" align="bottom"></span>&nbsp;&nbsp;</td> 
  61.      <td height="24" align="center" valign="baseline">&nbsp;</td> 
  62.     </tr> 
  63.     <tr> 
  64.      <td height="40" align="center" valign="baseline">&nbsp;</td> 
  65.      <td align="center" valign="baseline">&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" name="Submit" value="登录"></td> 
  66.      <td align="center" valign="baseline">&nbsp;</td> 
  67.     </tr> 
  68.    </table></td> 
  69.    <td background="images/index_06.gif">&nbsp;</td> 
  70.   </tr> 
  71.   <tr> 
  72.    <td height="100">&nbsp;</td> 
  73.    <td>&nbsp;</td> 
  74.    <td>&nbsp;</td> 
  75.   </tr> 
  76.  </table> 
  77. </form> 
  78. </body> 
  79. </html> 

以上内容是小编给大家分享的有关php中简单的图形处理,希望大家喜欢。

Tags: PHP图形处理

分享到: