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

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图形处理库
整理问题型鱼骨图实例、日常工作中的资料整理、三角形整理实例、家庭日常整理、档案整理实例,以便于您获取更多的相关知识。

时间: 2024-12-13 01:40:12

日常整理PHP中简单的图形处理(经典)_php实例的相关文章

PHP编写简单的App接口_php实例

本篇是笔记尝试写的第一个PHP接口,并在iOS开发中尝试应用测试.今天给大家分享如何自己写接口来测试! 相信很多朋友在开发时遇到过这样的问题:后台什么时候提供接口?怎么才提供一个接口,其他接口什么时候给出来?没有接口我们前端怎么能做得了? 哈哈!大学学完本篇就可以自己搞个接口来返回固定的死数据来测试了! 搭建PHP环境 由于本人使用的电脑是Mac,因此推荐大家使用MAMP PRO这款软件,不过是收费版,相信不想花钱的大家会有办法搞定的! MAMP PRO这款软件是集成环境软件,已经有apache

php制作的简单验证码识别代码_php实例

一直想写这个,过了很久今天兴趣来了索性记录下. 验证码 全自动区分计算机和人类的公开图灵测试(英语:Completely Automated Public Turing test to tell Computers and Humans Apart,简称CAPTCHA),俗称验证码,是一种区分用户是计算机和人的公共全自动程序.在CAPTCHA测试中,作为服务器的计算机会自动生成一个问题由用户来解答.这个问题可以由计算机生成并评判,但是必须只有人类才能解答.由于计算机无法解答CAPTCHA的问题,

php中stream(流)的用法_php实例

在Java里,流是一个很重要的概念. 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等.根据流的方向又可以分为输入流和输出流,同时可以在其外围再套上其它流,比如缓冲流,这样就可以得到更多流处理方法. PHP里的流和Java里的流实际上是同一个概念,只是简单了一点.由于PHP主要用于Web开发,所以"流"这块的概念被提到的较少.如果有Java基础,对于PHP里的流就更容易理解了.其

ThinkPHP中的三大自动简介_php实例

本文较为详细的讲述了ThinkPHP中的三大自动,是非常重要的应用,分享给大家供大家参考.具体如下: 一.自动验证 格式如下: array('验证字段','验证规则','错误提示','验证条件','附加规则','验证时间') 参数说明: 验证字段:需要验证表单字段名称 验证规则:必须要结合附加规则一起使用 错误提示:如果出现错误,抛出一个什么样的错误提示告知用户 验证条件:0.1.2 附加规则:1.regex使用正则验证 2.function使用函数验证 3.callback回调 4.confi

推荐25款php中非常有用的类库_php实例

Snappy Snappy是PHP5用于生成缩略图,快照,PDF,URL或HTML页面.它采用了优秀的基于WebKit的wkhtmltopdf和wkhtmltoimage可以适应在OSX,Linux的窗口. Geocoder Geocoder可以帮助你建立地理感知应用程序.它提供了一个抽象层,地理编码操作.该库分为两个部分:HttpAdapter和供应商,是真正的可扩展性. Ratchet Ratchet可以让开发者通过WebSockets在客户端和服务器之间创建实时的双向的应用程序.这使得构建

dedecms中使用php语句指南_php实例

在DEDECMS中,使用php语句的话,本身是有{dede:php}标签可以使用的,最简单的输入如 复制代码 代码如下: {dede:php} $numA = 1; $numB = 2; echo $numA + $numB; {/dede:php} 从上面语句可以看出dede:php标签可以名符其实的让在php中一样的用法,上面语句在php写法如下 复制代码 代码如下: <? $numA=1; $numB=2; echo $numA+$numB; ?> 是不是看上去很像啊,再看一个再有if

PHP中的Streams详细介绍_php实例

Streams 是PHP提供的一个强有力的工具,我们常常在不经意会使用到它,如果善加利用将大大提高PHP的生产力. 驾驭Streams的强大力量后,应用程序将提升到一个新的高度. 下面是PHP手册中对Streams的一段描述: 复制代码 代码如下: Streams 是在PHP 4.3.0版本被引入的,它被用于统一文件.网络.数据压缩等类文件的操作方式,为这些类文件操作提供了一组通用的函数接口.简而言之,一个stream就是一个具有流式行为的资源对象.也就是说,我们可以用线性的方式来对stream

PHP中,文件上传_php实例

在PHP中,文件上传一般是通过move_uploaded_file()来实现的.  bool move_uploaded_file ( string filename, string destination )本函数检查并确保由 filename 指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的).如果文件合法,则将其移动为由 destination 指定的文件.   如果 filename 不是合法的上传文件,不会出现任何操作,move_uploaded_f

ThinkPHP中session函数详解_php实例

在PHP中使用$_SESSION来操作session,而ThinkPHP提供了session的封装函数session().单单这一个函数就实现了session的增删改查的功能.下面我们分别来看其应用与实现. 该session()函数的定义是在Common/functions.php中定义. session配置 session($name='',$value='')函数有两个参数,$name为数组的时候是对session进行设置.使用如下: $name = array( 'name'=>'name