仓酷云

标题: PHP网页设计jpgraph中文利用手册:利用jpgraph生成图... [打印本页]

作者: 深爱那片海    时间: 2015-2-3 23:36
标题: PHP网页设计jpgraph中文利用手册:利用jpgraph生成图...
应该大致熟悉了一些学习过程,也许我的过程和你的有些出路,但是不管怎么样是殊途同归,我写这么多,也只是给大家一个借鉴的机会,至于好与不好,默默不敢打包票^0^     在引见完php jpgraph装置设置装备摆设教程和第一个jpgraph实例教程后,为了更好的利用jpgraph,咱们需求收拾整顿思绪,懂得一下利用php jpgraph编写生成图片代码时凡是需求哪些步调?用号令行是不是可以生成图片?HTML标签若何来挪用图象生成剧本?若何将图象写入文件?这些成绩恰是本教程需求解答的。即便你熟习PHP也激烈建议你疾速旅游本教程以懂得相干概念。
  利用号令行生成静态图片
  jpgraph类库可以直接利用PHP号令行体例来生成图片。其和旅游器生成图片是相似的任务体例。生成的图片数据为二进制。
  这类体例是一种使网站在固准时间距离内高效、主动创立图片的无效办法。这会防止会见者会见网站时每次从头生成图片以增添办事器承当。
  需求确保你的PHP号令行版本是cli版本。利用CGI/ISAPI版本的PHP因为会发生HTTP header而不克不及任务。
  jpgraph利用提醒:假如利用的是CGI版本,可以经由过程添加-q选项来克制HTTP header的发生。保举:PHP号令行参数利用与申明教程
  你可以在号令行体例下经由过程
1
php --version 号令来检查你的PHP号令行版本是不是为cli。然后,经由过程
1
php myimage.php > image.png 号令来生成图片,文件扩大名必需与生成的图片格局婚配。
  若何利用jpgraph类库生成图片
  在WEB页面上创立和利用图片配合的步调次要有
  1、创立一个剧本,其涵盖以下内容:经由过程取得数据并指定图片应若何构建、图形巨细几何、利用甚么色彩和字体并在图形上扩大其他器材
  2、在应当显示图形的HTML页面上需求增添一个或多个img标签来毗连PHP图象法式。固然,也完整可以经由过程在旅游器中直接挪用这些图象法式来显示。利用img标签这类办法可以在WEB页面上包括任何数目的图象。
  需求注重的是经由过程正常的HTTP GET/POST体例可以传递参数给图象法式。好比
1
<img src="showgraph.php?a=1&b=2">   这段代码多是用来掌握图象外不雅或传递数据到图片中应当显示的中央。注重,这能够不是最好的发送数据停止图形绘制的办法。关于有大批数据请求的图象,可以经由过程从数据库中获得图象剧本所需求的一切数据
  利用jpgraph创立图形的尺度步调详解
  当你筹办利用php jpgraph类库创立你的PHP图形剧本时,普通有以下几个步调
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
// 包括需要的类库文件
require_once 'jpgraph.php';
require_once '....';
  
// 创立Graph类实例
$graph = new Graph&#40;$width,$height, ...&#41;;
  
// 设定标准类型
$graph->SetScale&#40;'...'&#41;;
  
// 构建图形的细节和图形模子对象
  
// 将一个或多个图形模子对象添加到图形上
$graph->Add&#40;..&#41;;
  
// 将图形送至旅游器显示
$graph->Stroke&#40;&#41;;
?>   jpgraph是完整面向对象的,所以一切挪用都是针对类的详细实例的。个中的基本类就是Graph,其代表全部图表。
  在创立了Graph对象后,一切代码的添加都是为了机关图的细节。剧本中最初挪用的办法Graph::Stroke()是为了将已机关好的图发送到旅游器上。假如图表撑持CSIM,则此办法需求修正为Graph::StrokeCSIM()
  除这些尺度用法外,你也能够选择
  1、直接将图表发送到文件中。这是经由过程指定一个文件名作为参数传递到挪用的Stroke()办法中
  2、会见GD图片处置法式
  3、利用内置的缓存体系将之前生成的图片送出。注重:缓存体系默许是制止的,你需求在jpg-config.inc中停止恰当的设置以启用缓存体系。
  4、利用MGraph()类在统一个图片中联合几个图形。
  jpgraph图象紧缩格局的选择
  jpgraph类库默许是以PNG、JPEG、GIF的按次主动选择图片格局的。哪一种可用取决于装置jpgraph类库的体系。
  有两种办法可以改动图片格局
  1、改动jpgraph设置装备摆设文件jpg-config.inc.php中界说的默许图象格局,即
1
DEFINE('DEFAULT_GFORMAT','auto')   假如你但愿你一切的图片都是以JPG编码格局发生,你需求将其修正为
1
DEFINE('DEFAULT_GFORMAT','jpg')   2、在剧本中静态选择但愿紧缩的格局,次要经由过程挪用Image::SetImgFormat()办法完成,好比你但愿利用JPEG格局发送图片至旅游器
1
2
3
<?php
$graph->img->SetImgFormat&#40;'jpeg'&#41;
?>   几近一切的图表法式,最初一行都是$graph->Stroke();
  这一行入手下手实践的图表创作。一切办法挪用到这个阶段已设置类库场景并指定一切需要的参数(感到相似于photoshop的场景)。当你挪用Stroke()办法时入手下手构建图片。假定当图片生成时没有发明任何毛病,则准绳上依照以下步调
  1、入手下手在内存中创立图片。这是经由过程剖析指定的参数和供应的数据来创立各类已指定的图形形式。
  2、反省需求发送甚么header,好比图形利用哪一种图象紧缩格局,然后将header发送到客户端。
  3、发送实践的图片数据至客户端
  图片直接写入文件申明
  除将图片文件流送至旅游器外,也能够直接将图片写入定名的文件中。文件名必需以参数模式传递给Graph::Stroke()办法,即
1
2
3
<?php
$graph->Stroke&#40;'/tmp/myimage.png'&#41;;
?>   有三点需求注重
  1、PHP法式必需有你试图写入文件的目次的写入权限。假如你经由过程旅游器运转PHP。那意味着HTTP办事器必需具有在该目次写入的权限。
  2、文件的扩大名必需与指定的图象紧缩格局婚配。
  3、假如图片直接传输至文件,而没有送至旅游器,剧本可以前往通俗文本。
  将图片写入文件同时前往到旅游器中的实例申明
  在这个jpgraph实例中,正常应当利用jpgraph类库2.5版本中的Graph::StrokeStore($aFileName)办法来替换。假如你利用的是之前的版本,因为各类缘由没法晋级更新,可使用上面的绝招来完成,即便用_IMG_HANDLER选项来强制Graph::Stroke()办法前往图象句柄(handler)并中断。然先人工起首将图象发送至选定的文件,其次将文件流利用类库中的外部办法送至旅游器。即
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
  //包括需要的类库文件
  
$graph = new Graph&#40;400,300&#41;;
  
// 编写生成图片的代码
  
// 经由过程_IMG_HANDLER参数禁止图片送至旅游器
$gdImgHandler = $graph->Stroke&#40;_IMG_HANDLER&#41;;
  
// 默许的图片文件格局为PNG,并将图片传输至指定的文件中
$fileName = "/tmp/imagefile.png";
$graph->img->Stream&#40;$fileName&#41;;
  
//然后将图片送至旅游器
$graph->img->Headers&#40;&#41;;
$graph->img->Stream&#40;&#41;;
?>   Stroke函数出格申明
  除文件名参数外,有两个预界说的参数可以在此函数中利用
  _IMG_AUTO:将会在剧本目次下创立一个与剧本称号不异的文件,扩大名是已设置装备摆设的图片扩大名。
  _IMG_HANDLER:指定该文件名不创立图片也不前往到旅游器中。相反,它会只是Stroke()办法前往GD句柄。假如你想以后在不撑持jpgraph类库的中央操作图片这是很有效的。好比在一个静态生成的PDF文件中包括一个图片。
  强迫旅游器更新你的图片的办法
  一些旅游器中或许不会前往一个恳求至HTTP办事器除非用户刷新。因为剧本文件的工夫戳不改动能够会招致用户一向看到老数据,可以经由过程
1
<img src="myimagescript.php?dummy=\'.now()."> 完成,因为旅游器缓存成绩也会呈现这类情形,所以一样可使用这类办法强迫旅游器更新图片。
  生成图片的打印成绩申明
  有些阅读器,最光鲜明显的IE阅读器,有一个静态的图象打印的成绩。这是由于IE的设计者假定一切图片是传统的静态图象文件的图象,其实不会静态生成,这会有一些影响到打印。
  1、IE筹办打印时凡是老是会从头获得页面。这意味着会发生一个新的图片,假如数据瞬息万变,或许用户会以为图片有不同。
  2、有些老版本的IE旅游器基本不打印静态图象,独一的举措是确保利用静态图象
  最初一个成绩需求注重,凡是情形下大多半旅游器都撑持右键点击并下载图片至当地。但是,利用静态图象,有些老版本的IE能够会十分凌乱,好比试图下载一个PNG图象,保留时酿成了BMP文件保留。
  固然新版本的IE旅游器仿佛已可以很好的处置静态图象了。
  OK,利用jpgraph生成图片的具体步调和若何利用号令行体例生成图片、若何利用jpgraph将生成的图片写入文件、若何利用HTML标签挪用jpgraph剧本的教程就引见完了。
  :PHP网站开辟教程-leapsoul.cn版权一切,转载时请以链接模式注明原始出处及本声明,感谢。
学习数据库了,MYSQL可算是PHP的黄金搭档了,不过,虽然话是这么说,你也可能恨不得把MYSQL给生吞活剥了,因为这一行一列的东东简直让自己头晕目眩。
作者: 不帅    时间: 2015-2-4 03:37
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
作者: 灵魂腐蚀    时间: 2015-2-5 15:47
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
作者: 若相依    时间: 2015-2-5 21:52
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
作者: 愤怒的大鸟    时间: 2015-2-9 17:42
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
作者: 若天明    时间: 2015-2-25 17:38
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
作者: 老尸    时间: 2015-3-1 22:45
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
作者: 简单生活    时间: 2015-3-4 10:03
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
作者: 谁可相欹    时间: 2015-3-11 18:11
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
作者: 爱飞    时间: 2015-3-11 18:11
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
作者: 兰色精灵    时间: 2015-3-19 06:24
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
作者: 蒙在股里    时间: 2015-4-6 20:53
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
作者: 海妖    时间: 2015-4-13 19:03
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
作者: admin    时间: 2015-4-17 23:37
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
作者: 小妖女    时间: 2015-4-21 20:40
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
作者: 精灵巫婆    时间: 2015-4-26 13:17
兴趣是最好的老师,百度是最好的词典。
作者: 变相怪杰    时间: 2015-4-28 21:57
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
作者: 飘灵儿    时间: 2015-5-2 14:31
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
作者: 柔情似水    时间: 2015-6-12 18:49
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
作者: 冷月葬花魂    时间: 2015-6-17 00:44
Ps:以上纯属原创,如有雷同,纯属巧合




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2