用户名:  密码:   
您当前的位置:首页 > 网页设计 >  PHP > 

第12讲 了解GD库,PHP加载GD库,在图上加文字,验证码,柱形图,拆线图,饼形图,下载与配置jpgraph库

上次修改时间: 2016-02-01 16:41:57      来源:网络总结      作者:钢铁长陈
上一页      路径:DSD\Learn\PHP相关\      下一页

了解GD库,PHP加载GD库,在图上加文字,验证码,柱形图,拆线图,饼形图,下载与配置jpgraph库

12.1 了解GD库
1) PHP中使用GD库的操作图像与图形,GD库是开源的建图函数库,官网下载地址:www.boutel.com/gd
2) GD库支持GIF,PNG,JPEG,WBMP和XBM等多种图像格式的图形图像处理技术,如:统计图等

12.2 在PHP中设定图像支持
1) PHP5中默认安装GD库,但需要修改php.ini激活
2) 修改方法:搜索;extension=php_gd2.dll,去掉前面的分号后重启服务器。
3) 可把phpinfo()函数写到phpinfo.php文件中,运行查看GD2函数库是否安装成功,例:127.0.0.1/phpinfo.php

12.3 图形图像的典型应用
1) 创建一个简单的图像
 $im = imagecreate(200,60);  //创建画布,长200高60
 $white = imagecolorallocate($im,255,66,159); //设画布背景色为粉红色
 imageif($im); //输出图像
2) 用GD2函数在照片上加文字
 header("content-type:image/jpeg"); //定义输出图像类型为jpg
 $im=imagecreatefromjpeg("images/photo.jpg"); //载入照片
 $textcolor=imagecolorallocate($im,56,73,136);  //设字体颜色,为RGB值
 $fnt="c:/windows/fonts/simhei.ttf"; //定义字体
 $motto=chr(0xE9).chr(0x95).chr(0xBF).chr(0xE7).chr(0x99).chr(0xBD).chr(0xE5).chr(0xB1).chr(0xB1).chr(0xE5).chr(0xA4).chr(0xA9).chr(0xE6).chr(0xB1).chr(0xA0);
  //要输出文字,这里是urf-8转码工具把文字转成的编码,转码工具可网上下载
 imageTTFText($im,220,0,250,340,$textcolor,$fnt,$motto); //写ttf文字到图中,数字为坐标,文字颜色,字体,文字编码
 imagegif($im); //生成gif图像
 imageDestroy($im); //结束图形,释放内存
3) 用图像处理技术生成验证码
 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_check]);$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);  //释放图像资源
代码段2
 session_start();
 if ($_POST["Submit"]!=""){
 $check=$_POST["checks"];
 if ($checks==""){
 echo "<script> alert('验证码不能为空');widow.location.href='index.php';</script>";
 }
 if ($checks==$_SESSION[check_checks]){
  echo "<script> alert('用户登录成功!');widow.location.href='index.php';</script>";
 }else{
  echo "<script> alert('你输入的验证码不正确!');widow.location.href='index.php';</script>";
 }
 }
4) 用柱形图统计图书月销量
注:先要将JD库的jpgraph目录复制到网站根目录下
 include ("jpgraph/jpgraph.php");
 include("jpgraph/jpggraph_bar.php");

 $datay=array(160,180,203,289,405,488,489,408,299,166,187,105);
 //下面三句创建画布
 $graph = new Graph(600,300,"auto");
 $graph->SetScale("textlin");
 $graph->yaxis->scale->SetGrace(20);
 $graph->SetShadow(); //创建画布阴影
 $graph->img->SetMargin(40,30,30,40); //设置显示区左、右、上、下距边线的距离,单位为像素
 $bplot = new BarPlot($datay); //创建一个矩形对象
 $bplot->SetFillColor('orange'); //设置柱形图颜色
 $bplot->value->Show();  //设置显示数字
 $bplot->value->SetFormat('%d'); //在柱形图中显示格式化的销量
 $graph->Add($bplot); //将柱形图添加到图像中
 $graph->SetMarginColor("lightblue"); //设置画布背景色为淡蓝色
 $graph->title->Set("<<PHP从入门到精通>> 2007年销量统计");  //创建标题
 $a=array("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月");  //设置X坐标文字数组
 $graph->xaxis->SetTickLabels($a); //设置X坐标文字
 $graph->title->SetFont(FF_SIMSUN); //设置字符
 $graph->xaxis->SetFont(FF_SIMSUN);
 $grahp->Stroke(); //输出矩形图表
  //注:X与Y轴字体只能用它指定的一种字体
5) 用拆线图统计图书月销售额
 inclue (jpgraph/jpgraph.php"); //引用类文件
 include ("jpgraph/jpgraph_line.php"); //引用拆线图类文件
 $datay = array(8320,9360,14956,17028,13060,15376,25428,16216,28548,18632,22724,28460); //填充的数据
 $graph = new Graph(600,300,"auto"); //创建画布
 $graph->img->SetMargin(50,40,30,40); //设置统计图在画面的位置,上下左右边距,像素
 $graph->img->SetAntiAliasing(); //设置拆线的平滑状态
 $graph->SetScale("textlin");  //设置刻度样式
 $graph->SetShadow(); //创建画布阴影
 $graph->title->Set("2007年<<PHP5从入门到精通>> 图书月销售额拆线图"); //设置标题
 $graph->title->SetFont(FF_SIMSUN,FS_BOLD); //设置标题字体
 $graph->SetMarginColor("lightblue"); //设置画布背景为淡蓝
 $graph->yaxis->title->SetFont(FF_SIMSUN,FS_BOLD); //设置Y轴标题字体
 $graph->xaxis->SetPos("min");
 $graph->yaxis->HideZeroLabel();
 $graph->ygrid->SetFill(true,'','');
 $graph->("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"); //X轴文字
 $graph->xaxis->SetTickLabels($a); //设置X轴
 $graph->xaxis->SetFont(FF_SIMSUN); //设置X轴字体
 $graph->yscale->SetGrace();

 $p1 = new LinePlot($datay);  //创建拆线图对象
 $p1->mark->SetType(MARK_FILLEDCIRCLE);  //设置数据坐标点为圆形标记
 $p1->mark->SetFillColor("red");  //设置填充的颜色
 $p1->mark->SetWidth(4); //设置圆形标记的直径为4像素
 $p1->Setcolor("blue"); //设置拆形颜色为蓝
 $p1->SetCenter(); //在X轴的各坐标点中心位置绘制拆线
 $graph->add($p1); //在统计图上绘制拆线
 $graph->stroke(); //输出图像
6) 用3D饼形图统计各类商品年销售额比率
include_once ("jpgraph/jpgraph.php");  //调用类文件
include_once ("jpgraph/jpggraph_pie.php");
include_once ("jpgraph/jpgraph_pie3d.php"); //引用3D饼图PiePlot3D对像所在类文件

$date = array(266036,295621,335851,254256,254254,685425); //定义数组
$graph = new PeiGraph(540,260,'auto'); //创建画布
$graph->SetShadow(); //设置画布阴影

$graph->title->Set(“应用3D饼形图统计2007年商品的年销售额比率”); //创建标题
$graph->title->SetFont(FF_SIMSUN,FS_BOLD); //设置标题字体
$graph->legend->SetFont(FF_SIMSUN,FS_NORMAL);  //设置图例字体

$p1 = new PiePlot3D($data); //创建3D饼形图对象
$p1->SetLegends(array("IT数码","家电通讯","家居日用","服装鞋帽","健康美容","食品烟酒"));
$targ=array("pie3d_csimex1.php?v=1","pie3d_csimex1.php?v=2","pie3d_csimex1.php?v=3",
   "pie3d_csimex1.php?v=4","pie3d_csimex1.php?v=5","pie3d_csimex1.php?v=6");
$alts=array("val=%d","val=%d","val=%d","val=%d","val=%d","val=%d");
$p1->SetCSIMTargets($targ,$alts);

$p1->SetCenter(0.4,0.5);  //设置饼图所在画布位置
$graph->Add($p1);  //将饼图添加到图像中
$graph->StrokeCSIM();  //输出图像到浏览器


12.4 Jpgraph的安装与配置
1) 下载地址:http://www.aditus.nu/jpgraph/,下载后将tar文件解压复制到网站目录下相应位置
2) 配置jpgrahp类库是修改库目录下的jpg-cofig.inc.php文件,例:
 a.设置支持中文标准字体:DEFINE('CHINESE_TTF_FONT','bkai00mp.ttf');
 b.设置图片默认格式:DEFINE("DEFAULT_GFORMAT","auto"); //auto表按png,gif,jpeg顺序来检索系统图片格式
注:2.3版解压就可用了,不需配置