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


Posted in PHP onOctober 26, 2015

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

PHP 相关文章推荐
php cookie 登录验证示例代码
Mar 16 PHP
用来解析.htgroup文件的PHP类
Sep 05 PHP
PHP 验证码不显示只有一个小红叉的解决方法
Sep 30 PHP
使用PHP静态变量当缓存的方法
Nov 13 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
Nov 03 PHP
php页面缓存方法小结
Jan 10 PHP
PHP连接SQLServer2005的方法
Jan 27 PHP
php自动给网址加上链接的方法
Jun 02 PHP
深入浅析用PHP实现MVC
Mar 02 PHP
php使用pecl方式安装扩展操作示例
Aug 12 PHP
php实现简单的守护进程创建、开启与关闭操作
Aug 13 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 PHP
php 参数过滤、数据过滤详解
Oct 26 #PHP
php解析url并得到url中的参数及获取url参数的四种方式
Oct 26 #PHP
php实现CSV文件导入和导出
Oct 24 #PHP
PHP错误Warning:mysql_query()解决方法
Oct 24 #PHP
php实现表单多按钮提交action的处理方法
Oct 24 #PHP
一个简单至极的PHP缓存类代码
Oct 23 #PHP
10款实用的PHP开源工具
Oct 23 #PHP
You might like
无限级别菜单的实现
2006/10/09 PHP
php flush无效,IIS7下php实时输出的方法
2016/08/25 PHP
PHP goto语句用法实例
2019/08/06 PHP
做网页的一些技巧
2007/02/01 Javascript
JavaScript语句可以不以;结尾的烦恼
2007/03/08 Javascript
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
js关闭当前页面(窗口)的几种方式总结
2013/03/05 Javascript
关于jQuery对象数据缓存Cache原理以及jQuery.data详解
2013/04/07 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
2013/11/11 Javascript
Javascript中封装window.open解决不兼容问题
2014/09/28 Javascript
JS中的Replace方法使用经验分享
2015/05/20 Javascript
jQuery实现仿QQ头像闪烁效果的文字闪动提示代码
2015/11/03 Javascript
分步解析JavaScript实现tab选项卡自动切换功能
2016/01/25 Javascript
ES6新特性八:async函数用法实例详解
2017/04/21 Javascript
Angular.js组件之input mask对input输入进行格式化详解
2017/07/10 Javascript
JavaScript数组的5种迭代方法
2017/09/29 Javascript
vuejs使用$emit和$on进行组件之间的传值的示例
2017/10/04 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
纯js实现隔行变色效果
2017/11/29 Javascript
Node+OCR实现图像文字识别功能
2018/11/26 Javascript
使用puppeteer爬取网站并抓出404无效链接
2018/12/20 Javascript
Vue组件模板及组件互相引用代码实例
2020/03/11 Javascript
Python实现的一个找零钱的小程序代码分享
2014/08/25 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
基于Python os模块常用命令介绍
2017/11/03 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
Python 硬币兑换问题
2019/07/29 Python
Pytorch.nn.conv2d 过程验证方式(单,多通道卷积过程)
2020/01/03 Python
Python openpyxl模块原理及用法解析
2020/01/19 Python
简述 Python 的类和对象
2020/08/21 Python
英国潮流网站:END.(全球免邮)
2017/01/16 全球购物
交通专业个人自荐信格式
2013/09/23 职场文书
完美的中文自荐信
2014/05/24 职场文书
支行行长竞聘报告
2014/11/06 职场文书
遗失证明范文
2015/06/19 职场文书
CSS 实现磨砂玻璃(毛玻璃)效果样式
2023/05/21 HTML / CSS