ImageVerifierCode 换一换
格式:DOC , 页数:26 ,大小:491.04KB ,
资源ID:41983      下载积分:10 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-41983.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(PHP脚本动态生成图形的方法研究.doc)为本站会员(文****钱)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

PHP脚本动态生成图形的方法研究.doc

1、本科生毕业设计(论文)题目PHP脚本动态生成图形的方法研究学院计算机学院与信息工程学院专业计算机科学与技术班级024班姓名学号024632293指导教师职称副教授2006年5月30日新疆农业大学教务处制目录摘要1前言21动态图形实现技术的简介211PHP简介212GD图形库简介313JPGRAPH类库简介32开发平台及组件安装说明421开发平台422组件安装简介4221GD图形库安装简介4222JPGRAPH类库安装简介4223JPGRAPH类库文件说明53动态图形的实现631总体设计思想632数据库设计633利用GD图形函数库绘制动态图形734利用第三方类库JPGRAPH绘制动态图形1135

2、两个组件实用性总结对比14351GD图形函数库14352JPGRAPH类库144结论16谢辞17参考文献18附录191PHP脚本动态生成图形的方法研究摘要本文对LINUX服务器环境下利用PHP脚本动态生成图形的方法进行了一些研究,分别分析了利用GD图形库生成动态图形的方法,及利用JPGRAPH类库生成动态图形的方法,实现了通过PHP脚本绘制出柱状图、折线图和饼图,并给出了实现过程。关键词PHP;GD库;JPGRAPHRESEARCHONDYNAMICALLYGRAPHGENERATIONWITHPHPCHENJUANJUANABSTRACTTHISARTICLECONDUCTEDSOMERES

3、EARCHTOTHEMETHODOFUSINGTHEPHPSCRIPTDYNAMICPRODUCTIONGRAPHUNDERTHELINUXSERVERENVIRONMENT,ANALYZEDTHEMETHODUSEDTHEGDGRAPHLIBRARYPRODUCTIONGRAPHOFDYNAMIC,ANDANALYZEDTHEMETHODUSINGTHEJPGRAPHLIBRARYPRODUCTIONGRAPHOFDYNAMIC,DREWUPTHESTICKPLOT,THELINECHARTANDTHECAKECHARTTHROUGHTHEPHPSCRIPTHASBEENREALIZED,A

4、NDHASGIVENTHEREALIZATIONPROCESSKEYWORDSPHP;GDLIBRARY;JPGRAPH2前言当今社会正处于网络时代,信息化大潮席卷全球,INTERNET正日益向社会每一个角落延伸。随着WWW浏览器技术的不断成熟,利用ASP、PHP、JSP技术制作的动态网页也越来越多,在INTERNET上,有大量的数据信息,尤其是在一些商业网站上,经常会应用户不同要求对有关数据做出统计,动态输出各种统计图,用于显示一些市场的销售报告、供应需求信息或者股票市场的大盘信息。这些图形蕴含的数据库数据是动态的,而图形显示的结果是静态的,如何实现这些动态统计图形在网页上的显示,这是现在基

5、于INTERNET的动态图形一个难点问题。目前主要是利用不断成熟的WWW浏览器技术来开发动态网页,最流行也是比较成熟的有ASP、PHP、JSP技术,它们都提供在HTML代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。在ASP、PHP、或JSP环境下,HTML代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。他们都是利用内置或第三方组件对数据库或其它数据库进行访问,依据结果产生动态网页,发送到客户端,由浏览器解释显示结果,显示结果一般是表格形式。如果采用统计图形(柱状图、折线图、饼图等)方式输出结果,则不能直接生成网页,而要把结果提交给可以输出图表的组件,再由组件完成图形输

6、出。由于PHP是一种服务器端、跨平台、HTML嵌入式的脚本语言,易学易用,支持大量的数据库,程序的执行效率极高,尤其是对MYSQL数据库的存取非常直接、简练、没有额外的开销。最重要的是完全免费并且提供图形函数库,因而本文主要针对用PHP语言生成动态图形的方法进行了一些研究,发现了几种图形绘制的方法。这些方法来自于对两个组件的使用,一个组件是PHP自带的GD图形库,而另一个是由瑞典人JOHANPERSSON开发的,能方便绘制各种用于商业和科学领域的图形的第三方组件JPGRAPH类库。本文用几个常用的图形的实例来展示了如何利用PHP语言生成动态统计图形。1动态图形实现技术的简介11PHP简介PHP

7、的全名为“HYPERTEXTPREPROCESSOR”,它是一种HTML内嵌式的脚本语言,类似于IIS上运行的ASP。PHP将编写的程序与HTML源代码混合在一起,用一些特殊的标识将语句与HTML代码分开,当用户对此网页发出浏览请求时在服务器端将标识内的语句运行完,把运行结果与HTML代码合为一体返回给用户端的浏览器,其工作方式如图11所示。图11PHP工作方式示意图PHP使用了自己独特的语法,是一种混合了C、JAVA、PERL以及结合WEB应用的独特性而产生的新语法。这种语法基本是以C的语法模式来书写,但是没有3C语言那么严格,同时和JAVA一样是一种解释性的语言。听起来很是麻烦,不过只要花

8、一点时间,就会发现PHP的语法还是易学易用的。PHP语言可以比CGI或是PERL更快地执行动态网页,原因是PHP将自己编译进WEB服务器(APACHE)内部,同时又以灵活的形式存在于其他WEB服务器中。它能够以传统的类似PERL的CGI解释方式执行,也能够以ISAPI方式应用于IIS之中,还能以模块化方式直接与APACHE一起编译,从而达到同APACHE一样的高效和稳定。12GD图形库简介GD是一个以C语言源码形式提供的跨平台免费绘图软件包,可以编译成DOS、WINDOWS、UNIX等不同版本,可以在其官方网站进行下载。GD的图形功能包括在内存中建立绘图对象,设置绘图颜色,画线、画圆和填充矩形

9、、多边形区域等。表11中列举了一些PHP中常用的图形函数表11常用的图形函数函数功能IMAGEARC画弧线IMAGELINE绘实线IMAGECOLORALLOCATE匹配颜色IMAGECREATE建立新图IMAGEGIF建立GIF图形IMAGEDESTROY结束图形IMAGEFILL图形着色IMAGEFILLPOLYGON多边形区域着色IMAGEFILLTOBORDER指定颜色区域内着色IMAGEFILLEDRECTANGLE添充矩形IMAGETTFTEXT画水平字符13JPGRAPH类库简介JPGRAPH类库出现于2002年9月,是由瑞典人JOHANPERSSON开发的,他是一家瑞典私人公司

10、的CEO和CTO。目前JPGRAPH的最新版本是发布于2006年5月26日的JPGRAPH1204A和JPGRAPH212。其实行双重许可证QPL10QTFREELICENSEE为非商业用途、开放源代码及教育用户免费;JPGRAPH专业许可证为商业用户,并且有额外的特色功能。JPGRAPH项目网站这样描述它JPGRAPH是一个为PHP(版本高于PHP431)面向对象的图形创造的类库,它完全用PHP语言编写的,可以在所有PHP脚本中使用PHP的CGI/APXS/CLI两个版本都支持。使用这个库可以创造许多类型图形,可以是在线创建或写在文件里创建好再调用。无论是对于只有最少代码的“以快捷或不恰当方

11、式获得的图形”,还是对于需要非常细微控制的复杂专业图形,JPGRAPH都可以使它们的绘制变得简单。它同样适用于科学和商业类型的图形。JPGRAPH分发版中包含大量可以根据特定需求进行定制的示例脚本。将JPGRAPH用于数据研究工具非常简单,只需找到功能与需求类似的示例脚本,然后对该脚本进行改写以满足特定需求即可。4JPGRAPH的最大的特点就是易学易用,它使得作图变成了一件非常简单的事情,只需从数据库中取出相关数据,定义标题,图形类型,剩下的事情就交给JPGRAPH,只需掌握为数不多的JPGRAPH内置函数,就可以画出非常炫目的图形。2开发平台及组件安装说明21开发平台我用的开发平台是以LIN

12、UXREDHAT90作为操作系统,以APACHE20为WEB服务器;以MYSQL作为后台数据库,包含GD库的PHP作为开发工具。选用LINUX操作系统和MYSQL数据库主要是因为它们是开放源代码的操作系统和数据库,APACHE是INTERNET上使用最广泛的WEB服务器,而且它们都是免费提供的。开放源代码意味着系统的安全性有更好的保障,软件的BUG可以很快的被修复,新的特性根据需要可以很快的被加上。选择MYSQL还是因为它的运行速度很快,而且MYSQL还有容易使用、性能较高、安全性好、可控制性好、移植性好、开放式开发等特点。所以,我选择了这样的组合来作为开发实验的平台,它们之间的安装和调试我就

13、不多说了,相关的专业文章有很多,下面就开始进入实现绘制图形的部分。22组件安装简介221GD图形库安装简介PHP首先要加载GD图形库,然后就可以使用图形处理函数了。在LINUX下,要使这些画图函数能够工作,需要进行编译安装,以下是GD图形库在LINUX下安装的大致步骤1先到官方网站下载最新的版本。2将所有下载的软件拷贝到同一目录中,并按JPEG6B(GD库支持GIF格式图像的程序库)、ZLIB(LIBPNG文件的压缩引擎)、LIBPNG(GD库支持PNG格式图像的程序库)、FREETYPE2(字体程序库)、GD2的顺序进行安装,因为在编译GD库时会用到前面先安装的一些文件。3用“PREFIX”

14、命令指定它们的安装目录,用“WITH目录名”命令来让GD同时支持GIF和PNG两种图像格式以及字体,并指明安装目录。4当安装完PHP时,用“WITH目录名”命令来让PHP加载GD库,并指明GD的安装目录,然后把PHPINI文件拷贝到系统文件目录下。5修改APAHCE的配制文件HTTPDCONF,在“ADDTYPEAPPLICATION/XTARTGZ”行下加入以下代码ADDTYPEAPPLICATION/XHTTPDPHPPHP3ADDTYPEAPPLICATION/XHTTPDPHPPHPADDTYPEAPPLICATIONADDTYPEAPPLICATION/XHTTPDPHPSOURCE

15、PHPSADDDEFAULTCHARSETGB2312说明增加PHP3和PHP是告诉APAHCE将PHP3和PHP后缀作为PHP解析,增加PHPS是作为PHP的源文件进行语法高亮显示,ADDDEFAULTCHARSETGB2312是让APACHE支持中文字符显示。注意事项下载GD库的安装文件时要注意它的版本,GD2026GIFTARGZ支持GIF图像格式,而GD2027TARGZ不支持GIF图像格式,最新的版本PHP5又开始支持GIF图像格式了。最后要编译PHP的系统文件PHPINI,将文件中EXTENSIONPHPGDDLL行前的注释去掉即可完成整个安装。222JPGRAPH类库安装简介在安

16、装PHP后,就可以安装JPGRAPH了,要注意的是要保证你的PHP版本最低5为404(最好是411),并且支持GD库。必须确保GD库可以正常运行,可以通过运行PHPINFO来查看GD库的信息是否存在的方法来判断。同时要有要求GD库的版本应为20,而不是10。下面是安装步骤的简述1先到JPGRAPH官方网站HTTP/WWWADITUSNU/JPGRAPH下载最新的版本。2下载的JPGRAPH压缩包解压到任意文件夹,但最好是放在安装的PHP文件夹中,让PHP能顺利找到它。3设置JPGRAPHPHP(JPGRAPH的主配置文件)。设置JPGRAPH的CACHE(缓存)文件夹,和TTF(字体)文件夹。

17、分别在35行和38行35/DEFINE“CACHE_DIR“,“/TMP/JPGRAPH_CACHE/“38/DEFINE“TTF_DIR“,“/USR/X11R6/LIB/X11/FONTS/TTF/“LINUX系统改为DEFINE“CACHE_DIR“,“/TMP/JPGRAPH_CACHE/“DEFINE“TTF_DIR“,“/USR/X11R6/LIB/X11/FONTS/TTF/“完成上述设置后就可以使用JPGRAPH了。223JPGRAPH类库文件说明JPGRAPH同样可以跨平台使用,在WINDOWS和LINUX操作系统上都可以用。最新的JPGRAPH类库已经开发了两个版本,一个是

18、针对PHP4的JPGRAPH1203,只能在PHP4环境中工作,而在PHP5中将不会工作,而另一个版本就是支持PHP5的工作环境JPGRAPH211,同理,它在PHP4环境中也不能使用。安装前请先确定你使用的操作系统及PHP的版本,正确选择安装文件,以便使JPGRAPH高效的工作,从而生成正确且美观的图形。因为我使用的是PHP4的环境,所以我安装的版本是JPGRAPH1203,下载的JPGRAPH类库中将包含很多文件,其中SRC文件夹下的文件是类库的核心程序,下面这张表格介绍了一些主要文件的功用表21JPGRAPH主要文件功能简介文件主要功能JPGCONFIGINCJPGRAPH的配置文件,配

19、置缓存、字符集、文件默认目录等等一些公共参数JPGRAPHPHPJPGRAPH的核心程序,包含画图及所有控制程序、公共类JPGRAPH_GRADIENTPHP颜色和一些基础的类文件JPGRAPH_GB2312PHP汉字的字符转换文件JPGRAPH_UTILSINC非强制性的公用公式的类别文件JPGRAPH_ERRORPHPJPGRAPH的错误信息文件FLAGSDAT预先编译的数据文件其中,核心文件是JPGCONFIGINC和JPGRAPHPHP这两个文件,它们是生成的所有图形的基础文件,JPGRAPHPHP其中包含着绘制图形时主要调用的类和函数文件,在画图时首先就要根据需要和环境对这两个文件进

20、行配置,就如我在安装方法中叙述的一样。其余的文件就是绘制各种图形的类库,如绘制折线图的类库JPGRAPH_LINEPHP,绘制饼图的类库JPGRAPH_PIE3DPHP,等等相6关的一些用于绘制各种不同图形的类文件。3动态图形的实现31总体设计思想实现基于PHP脚本动态生成图形的最好方案是在WWW服务器端使用图形组件,通过该图形组件,可以把数据库中的数据转换成一张图形,再转换为浏览器能够识别的图像格式,通过网络服务器下载到浏览器的客户端。所以,我将PHP自带的GD图形库和JPGRAPH类库都加载到服务器端,从而使客户端不用再安装图形组件,避免客户端无法显示图形的问题。具体将数据库中的数据用图形

21、的方式表现在WEB中我觉得应有以下步骤1连接数据库;2获得相应数据;3利用图形绘制组件,根据已获得的数据绘制相应图形;4将绘制的图形嵌入网页(HTML),并发送给客户端(CLIENTS)。32数据库设计动态图形的数据后台就是数据库,在本开发实例中使用的是MYSQL数据库。和通常生成一张查询表一样,数据是通过SQL查询语句来获取的,只不过通常我们通过查询语句只看到一些表格,而通过GD图形库和JPGRAPH类库编译后就可以把一张张表格变成生动直观的图形。数据库不需要特别的设计,只要数据的格式正确,并且SQL查询语句正确,一般都可以将数据导出。下面是在本实例中用到的表格的结构表31产品销售总额表字段

22、类型NULL默认注释IDINT255是NULL标记DATEVARCHAR20是NULL时间PRICEFLOAT10,2是NULL总金额表32产品销售对比表字段类型NULL默认注释IDINT255是NULL标记DATEVARCHAR20是NULL时间PRODUCT1FLOAT10,2是NULL1类产品每月金额PRODUCT2FLOAT10,2是NULL2类产品每月金额表33各类产品销售总额表字段类型NULL默认注释IDINT255是NULL标记NAMEVARCHAR20是NULL产品名COUNTFLOAT10,2是NULL每类产品金额7表34四地区产品销售对比字段类型NULL默认注释IDINT2

23、55是NULL标记NAMEVARCHAR20是NULL地区名称JANUARYFLOAT10,2是NULL1月销售金额FEBRUARYFLOAT10,2是NULL2月销售金额MARCHFLOAT10,2是NULL3月销售金额APRILFLOAT10,2是NULL4月销售金额在本文的实例中实现连接数据库的语句主体都是一样的,PHP与MYSQL之问的交互主要通过一系列的MYSQL函数,这些函数包括连接、断开和查询数据库,数据处理,错误处理,总共有32个。而在本文的实例中仅仅只使用了其中的连接、断开和查询函数。具体的实现方法是用“MYSQL_CONNECT”函数进行数据库的连接,接着用“MYSQL_S

24、ELECT_DB”函数选择相应的数据库,然后用“MYSQL_QUERY”函数获取表中的数据,再用WHILE循环语句将数据以数组的形式传递给变量,最后用“MYSQL_CLOSE”断开数据库连接,具体代码见附录。33利用GD图形函数库绘制动态图形图31至图33是利用GD图形函数生成动态图形。图31折线图8图32柱状图图33饼图下面以一个实例具体介绍PHP如何利用GD图形函数生成图形,并输入到客户端的浏览器中。我将折线图和柱状图编写在同一个类中,因为这样可以少定义一些相同的变量。在这个类中一共设置了12个变量,它们用来传递和设置图像的大小,背景颜色,字体大小和颜色,图形类型,数值等等主要数据。自定义

25、函数有9个,如下表表35自定义函数功能简介表函数功能SETIMAGE定义图象大小和背景色,及是否透明;SETITEM传入数据,定义样式(1为竖柱图2为折线图),图像距离;SETFONT定义字体大小;PRINTREPORT绘制图形9PRINTXY绘制XY坐标轴IMAGECOLUMNS绘制柱状图IMAGELINE绘制折线图PRINTALL完成图形输出其中函数PRINTXY,IMAGECOLUMNS,IMAGELINE,PRINTALL包含在PRINTREPORT函数中,用下面的代码调用以上的这些函数就可以实现图形的生成,代码REPORTNEWIMAGEREPORT/创建一个新的图形REPORTSE

26、TIMAGE550,300,255,255,255,1/设置图形的大小和背景色REPORTSETITEMTEMPARRAY,2,40/读入数据,指定图形REPORTSETFONT3/设置字体大小REPORTPRINTREPORT/输出图形到浏览器利用SWITCH选择控制命令就来控制绘制柱状图还是折线图,当在SETITEM函数中写入1时将会调用IMAGECOLUMNS绘制柱状图,写入2时将会调用IMAGELINE绘制折线图。现在以柱状图为例叙述它的设计思想。在绘制柱状图时,主要是用IMAGEFILLEDRECTANGLE函数绘制,此函数的功能就是画矩形并填充,然后用IMAGESTRING画字符函

27、数绘制标注的数据,再利用FOR循环语句取出数据最大值,控制折线的高度,用BORDER变量控制每个柱体之间的距离,只要数据和坐标没有问题就可以生成图形了。在此过程中,我将横坐标的标记用一个数组的形式传给变量“X_TEXT”,然后利用IMAGESTRING画字符函数绘制标注的数据;图形数据是利用上面提到的与数据库交互的语句实现获取,接着就通过“ITEM_ARRAYTHISITEMARRAY”传给了变量“ITEM_ARRAY”;利用“HEIGHTTHISYTHISBORDERTHISYTHISBORDER2ITEM_ARRAYI/ITEM_MAX”控制每个柱体的高度,这句代码计算出了每个数据与最大数

28、据的百分比,也就是说以最大的那个数字作为整个图形高度的标尺,剩下的数据根据所占的百分比来确定它们每个柱体的高度,柱体的高度和宽度确定后就可以生成所要的图形了。部分程序如下FUNCTIONIMAGECOLUMNSITEM_ARRAYTHISITEMARRAY/读入数据NUMCOUNTITEM_ARRAYITEM_MAX0FORI0IBORDER2/设置间隔距离/画柱形图/用FOR循环获得随机颜色FORI0IR255GRANDTHISG,200BRANDTHISB,200ELSERRAND50,200GRAND50,200BRAND50,200COLORIMAGECOLORALLOCATETHIS

29、IMAGE,R,G,B/设置颜色/柱形高度HEIGHTTHISYTHISBORDERTHISYTHISBORDER45ITEM_ARRAYI/ITEM_MAX/取柱体高度IMAGEFILLEDRECTANGLETHISIMAGE,XX,HEIGHT,XXTHISBORDER,THISYTHISBORDER,COLOR/画柱体IMAGESTRINGTHISIMAGE,THISFONTSIZE,XX10,HEIGHTTHISBORDER,ITEM_ARRAYI,THISFONTCOLOR/画字符/间隔距离XXXXTHISBORDER2代码运行结果如图32。可以看到在生成图形的时候,用SRAND函数

30、产生随机数函数来指定了每个柱状体的颜色,如果想让柱状体始终以一种颜色生成,则把下这条语句加入COLORIMAGECOLORALLOCATETHISIMAGE,0,0,255柱状体就会以蓝色显示。要注意的一点是要将标头发给浏览器,我在公共部分用“HEADER“CONTENTTYPEIMAGE/GIF“”语句定义,让它知道是一个GIF文件。最后利用上面提到的实现图形生成的代码“REPORTPRINTREPORT”就可以绘制出图形了,具体代码请参见附录。34利用第三方类库JPGRAPH绘制动态图形以下图34至图36是利用JPGRAPH类库绘制的图形。我也以柱状图为例进行说明,具体介绍一下PHP如何利

31、用JPGRAPH类库绘制图形,这样便可以和利用GD函数库绘制图形的方法有个比较。11图34折线图图35柱状图图36饼图绘制柱状图的主程序,是JPGRAPH中自带的实例中的一个文件,将坐标标记和数据进行了一些改动,为了生成动态的图形加入了和数据库交互的语句。设计12思想是在同一个类里同时调用绘制柱状图和折线图的类,然后把它们再绘制在背景图片上。折线图的每个小标记块都是在主类文件中先定义好的,在调用类中只需要指定调用即可。同样的柱状图填充的颜色也是定义好的一个色块,只要正确导入数据,就生成了图22的效果。在这个主程序中出现了很多函数的调用,可以从程序中看到此代码段要同时调用JPGRAPHPHP、J

32、PGRAPH_LINEPHP和JPGRAPH_BARPHP文件才可以运行。JPGRAPHPHP在前面已经提到过,是JPGRAPH类库中最核心的文件,控制着整个图形的生成,JPGRAPH_LINEPHP是绘制折线图的类文件,JPGRAPH_BARPHP则是绘制柱状图的类,在这三个文件中,我们可以看到这段代码中调用的所有的函数,也就是说,开发人的思想是把公用的函数集写在一个主文件里,然后写出一个用来设定参数和实现图形的前台文件再来调用公用的函数集,既保证了生成图形的多样性,又保持了程序的优化,所以让使用它的人在很短的时间里就能绘制出图形,只要更改调用文件中的代码就可以生成各种各样的图形,多加研究就

33、很容易学会使用这个类库了。当我们有需要进行对比数据时候就可以采用这个图形,实用且美观。因为这个图形是两个图形结合而成的,所以从数据库中也要同时取出两组数据,绘制此图形时注意数据库查询语句的书写。代码中使用的函数的功能在旁边进行了注释。代码如下SETSCALE“TEXTLIN“/设置图形标记(数据)的类型GRAPHSETMARGINCOLORWHITE/设置图形背景的颜色GRAPHSETMARGIN30,1,20,5/设置图形四周的边框宽度GRAPHSETBOX/设置图形背景GRAPHSETFRAMEFALSE/设置图形四周为无框架13GRAPHTABTITLESET1997年与1998年销售对

34、比/标题GRAPHTABTITLESETFONTFF_SIMSUN,FS_BOLD,10/标题字体/设置X轴和Y轴的标记GRAPHYGRIDSETFILLTRUE,DDDDDD05,BBBBBB05GRAPHYGRIDSETLINESTYLEDASHEDGRAPHYGRIDSETCOLORGRAYGRAPHXGRIDSHOWGRAPHXGRIDSETLINESTYLEDASHEDGRAPHXGRIDSETCOLORGRAYGRAPHXAXISSETTICKLABELSLABELS/设置X轴的坐标值GRAPHXAXISSETLABELANGLE45/设置X轴的坐标值显示角度为45度GRAPHXA

35、XISSETFONTFF_SIMSUN,FS_BOLD,9/设置X轴的坐标值字体/画每一个柱壮体BPLOTNEWBARPLOTYDATABPLOTSETWIDTH06FCOL440000TCOLFF9090BPLOTSETFILLGRADIENTFCOL,TCOL,GRAD_LEFT_REFLECTION/填充每个柱状体BPLOTSETWEIGHT0/设置每个柱状体的边框线的宽度为0GRAPHADDBPLOT/把每个点加入图形中/绘制填充折线图LPLOTNEWLINEPLOTYDATA2LPLOTSETFILLCOLORSKYBLUE05LPLOTSETCOLORNAVY07LPLOTSETB

36、ARCENTER/小标记块的绘制LPLOTMARKSETTYPEMARK_SQUARELPLOTMARKSETCOLORBLUE05LPLOTMARKSETFILLCOLORLIGHTBLUELPLOTMARKSETSIZE6GRAPHADDLPLOT/加入折线图GRAPHSTROKE/最后把它送回到浏览器运行程序其结果如图35所示。以上程序完成了一个稍微有点复杂的图形,是折线图和柱状图的相结合的例子,一些重要的函数和调用我已经在程序中进行了标注,所有被调用的函数的主体都分散在JPGRAPHPHP、JPGRAPH_LINEPHP和JPGRAPH_BARPHP文件中,由于函数比较庞大复杂,本文就

37、不在这里进行详细解释了,可以在JPGRAPH的官方网站参看它的手册和问题汇总。1435两个组件实用性总结对比351GD图形函数库总的来说,利用PHP中自带的GD图形函数库绘制的图形能在WEB上较好的显示出来,大多数函数用起来很方便,并且可以从PHP手册上了解每一个函数的用法和功能,所以画平面图形还是很不错的,但是绘制3D图形或复合图形等一些较复杂的图形时就有些显得有些麻烦,代码会比较多,因为要控制更多的变量和创建自定义函数。虽然PHP并不是专业用来做图的语言,但是它有GD图形函数库支持后,再加上自身原本的灵活性,通过不同的程序编写便可以生成各种各样的图形,PHP和MYSQL数据库之间的数据交互

38、比别的组合要方便且速度较快,因而,绘制一些简单的动态图形,比如柱状图、折线图、饼图等还是比较方便的,能顺利的将图形显示在WEB浏览器上。而其中的难点就是对汉字的支持,使用中文字体时会出现乱码现象,原因一是LINUX中对中文字体的支持不多,要重新加载中文字体;原因二是PHP中的GD库支持中文,但是必须要以UTF8格式的参数来进行传递。那么我们首先就要下载一些中文字体放在LINUX中,或者把WINDOWS下的一些TTF字体拷贝到LINUX下的TTF字体库中。接着就要让汉字显示在用PHP绘制的图形里,一般有两个方法方法一,用WORD2000或WINDOW2000下的记事本编辑所要显示的汉字;把所编辑

39、的文字存成格式为UTF8格式的文件;用一个16进制的编辑器如用PCTOOLS的EDIT功能打开这个文件,这时会看到打开的文件里面有一些16进制的字符。一个汉字占三个字节,所以应该选择编辑汉字个数乘以3个字节的内容,把此编码记录下来以备后用,在写汉字的时候用UTF8格式写,一般就可以正常显示了,示例代码/定义字体FONT“/USR/X11R6/LIB/X11/FONTS/TTF/SIMSUNTTC/定义输出字体串STRCHR0XE8CHR0XB5CHR0X9B“/写TTF文字到图中IMAGETTFTEXTPIC,20,0,10,20,WHITE,FONT,STR方法二,利用ICONV函数进行字符

40、转换,示例代码X_TEXT1月2月3月4月5月6月7月8月9月10月11月12月FONT“/USR/X11R6/LIB/X11/FONTS/TTF/SIMSUNTTC“STRICONVGB2312,UTF8,X_TEXTIMAGETTFTEXTTHISIMAGE,10,0,XX10,THISYTHISBORDER15,THISFONTCOLOR,FONT,STR在实现过程中我是将WINDOWS下的SIMSUNTTC字体(宋体)拷贝到了LINUX下的TTF字体库中,然后利用上面介绍的方法二解决了乱码问题。因而,利用PHP语言可以绘制出动态图形,PHP语言中的绘图函数是比较完善的,只要你精通PHP

41、的绘图语言,并有一定的编写经验,通过仔细编写,可以利用PHP绘制出各种各样的图形。那么如果对于不太了解PHP语言的人们来说,最好的选择就是利用第三方的绘图类库JPGRAPH。352JPGRAPH类库JPGRAPH类库是在GD图形库的基础上开发出来的,要求GD库的版本应为20才能发挥它的功能。它集合了GD图形库的原有的绘图函数,在此基础上加进了更多的复合函数,把一个个单独的函数编译在一起,又加进去了许多自定义类和函数,从而生成一个功能比较全面的类,用户使用的时候只用改动它的调用文件15代码,也就是生成图形的主程序,其他的事情都由类库中的复合函数来完成,可以说使用起来比较方便。我们可以在它的EXA

42、MPLES文件夹中看到它所能绘制的图形,有344个图形例子,美观且实用,能满足应用在商业和科学领域的统计图形,如果没有别的特殊要求,通过简单修改JPGRAPH类库的数据参数就可以得到自己想要的漂亮的图形,可以参考本文实例进行设置参数的学习。同样的JPGRAPH也出现了中文乱码的问题,虽然最新的版本已经能支持中文了,但是好像只支持为数不多的中文字体,这个问题我也还在研究中。目前,如果您的环境是使用BIG5编码,只要修改SRC/JPGCONFIGINC中的CHINESE_TTF_FONT设定即可;LINUX环境的使用者则需要确认/USR/X11R6/LIB/X11/FONTS/TTF/或其他字体路

43、径中的中文字体档案名称。如果是UTF8环境,那么就需要修改一下核心程式,因為JPGRAPH在产生图形时基本上都是通过UTF8编码,而内部的中文处理方式会将BIG5转换为UTF8,这在UTF8环境就显得多余,而且会造成错误。因此需要修改SRC/JPGRAPHPHP这個档案,找到下面程序代码ELSEIFAFFFF_CHINESEIFFUNCTION_EXISTSICONVJPGRAPHERRORRAISEUSAGEOFFF_CHINESEFF_BIG5FONTFAMILYREQUIRESTHATYOURPHPSETUPHASTHEICONVFUNCTIONBYDEFAULTTHISISNOTCOM

44、PILEDINTOPHPNEEDSTHE“WIDTHICONV“WHENCONFIGUREDRETURNICONVBIG5,UTF8,ATXT将它修改为ELSEIFAFFFF_CHINESERETURNATXT经过以上的调整就可以正常使用了。本文在开发时没有用比较特殊的字体,将WINDOWS下的SIMSUNTTC字体(宋体)和SIMHEITTF字体(黑体)拷贝到了LINUX下的TTF字体库中,再利用“SETFONTFF_SIMSUN,FS_BOLD,9”这条语句就可以正常输出汉字了,其中“FF_SIMSUN”和“FS_BOLD”是字体名称,“9”是指字体大小,这个SETFONT函数是JPGRA

45、PH中的定义字体和字体大小的函数,可以在JPGRAPHPHP和GB2312PHP找到它支持的中文字体,但是有些特殊的中文字体目前还不能支持。总之,JPGRAPH是一个非常实用的面向PHP制作图形的类库,使绘制动态图形变的简单化,推进了PHP语言图形绘制方面的发展。4结论随着数据库技术的迅速发展以及数据库管理系统的广泛应用,需要分析统计的数据越来越多,人们希望能够以更加直观、明确的得到答案,而统计图形则正好满足了人们的需求。本文主要介绍了在LINUXAPACHEMYSQLPHP环境下创建动态图形显示的方法。通过利用GD图形库或JPGRAPH类库绘制动态图形的实例,叙述了如何利用PHP语言绘制图形

46、的一些方法,实现了柱状图、折线图、饼图这些基本图形的绘制,且基本解决了中文乱码的问题,达到了预期的效果。当然,鉴于本人的知识水平,对PHP脚本生成动态图形方法的研究还仅在一定的范围内,希望在这个领域中有更多更好的绘图的软件出现,让我们能更方便的制作出美观实用的动态图形。16谢辞在实习和做毕业设计的近几个月时间是我学生生涯中最有价值的一段时光。这里有治学严谨而不失亲切的老师,有互相帮助的同学,更有向上、融洽的学习生活氛围。借此论文之际,我想向所有人表示我的谢意。首先感谢老师。本论文是在张老师的指导下修改完成的。在此,要对他的细心帮助和指导表示由衷的感谢。在这段时间里,我从他身上不仅学到了许多的专

47、业知识,更感受到了他工作中的兢兢业业,生活中的平易近人。此外,他严谨的治学态度和忘我的工作精神值得我去学习。非常感谢王亮亮老师和王斌老师,在我的毕业设计中,他们的指导给予了我极大的帮助,使我对整个毕业设计的思路有了总体的把握,在整个开发过程中提出了许多建设性意见,并耐心的帮我解决了许多实际问题,使我有了很大收获。还要感谢给与我帮助的同学和朋友,他们在我的毕业设计过程中经常给我提出许多关键性的问题,使我受益匪浅。感谢二年来传授我知识的老师们,更要感谢我的家人对我学业上的支持和鼓励,感谢所有关心帮助过我的人。同时感谢大学,感谢计算机与信息工程学院。总之,在以后的学习生活中我将以加倍的努力作为对给予我帮助的学校、老师及同学们的回报。17参考文献1丁晟春基于INTERNET的统计图表功能实现技术J现代图书情报技术2004年49102黄冬INTERNET的自由语言PHP网络应用技巧J,2000年51161173聂刚基于WEB的数据库图形报表的设计与实现J计算机应用2001年211196974WHATISJPGRAPH,JPGRAPH,2005年12月12日,ONLINEAVAILABLEHTTP/WWWADITUSNU/JPGRAPH/(2006516)5吴应嘉基于LINUX环境下的APACHE、

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。