|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
应该大致熟悉了一些学习过程,也许我的过程和你的有些出路,但是不管怎么样是殊途同归,我写这么多,也只是给大家一个借鉴的机会,至于好与不好,默默不敢打包票^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($width,$height, ...);
// 设定标准类型
$graph->SetScale('...');
// 构建图形的细节和图形模子对象
// 将一个或多个图形模子对象添加到图形上
$graph->Add(..);
// 将图形送至旅游器显示
$graph->Stroke();
?> 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('jpeg')
?> 几近一切的图表法式,最初一行都是$graph->Stroke();
这一行入手下手实践的图表创作。一切办法挪用到这个阶段已设置类库场景并指定一切需要的参数(感到相似于Photoshop的场景)。当你挪用Stroke()办法时入手下手构建图片。假定当图片生成时没有发明任何毛病,则准绳上依照以下步调
1、入手下手在内存中创立图片。这是经由过程剖析指定的参数和供应的数据来创立各类已指定的图形形式。
2、反省需求发送甚么header,好比图形利用哪一种图象紧缩格局,然后将header发送到客户端。
3、发送实践的图片数据至客户端
图片直接写入文件申明
除将图片文件流送至旅游器外,也能够直接将图片写入定名的文件中。文件名必需以参数模式传递给Graph::Stroke()办法,即
1
2
3
<?php
$graph->Stroke('/tmp/myimage.png');
?> 有三点需求注重
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(400,300);
// 编写生成图片的代码
// 经由过程_IMG_HANDLER参数禁止图片送至旅游器
$gdImgHandler = $graph->Stroke(_IMG_HANDLER);
// 默许的图片文件格局为PNG,并将图片传输至指定的文件中
$fileName = "/tmp/imagefile.png";
$graph->img->Stream($fileName);
//然后将图片送至旅游器
$graph->img->Headers();
$graph->img->Stream();
?> 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给生吞活剥了,因为这一行一列的东东简直让自己头晕目眩。 |
|