JpGraph入门(jpgraph-2.2)

JpGraph入门(jpgraph-2.2)
2007-10-24 12:50

JpGraph入门,
官方网站:http://www.aditus.nu/jpgraph/
在线手册http://doc.async.com.br/jpgraph/html/
本文是我从其它人的例子其手册上综合写上来的,针对版本为jpgraph-2.2
根据手册上的步骤
第一:配置
##############################################################first
判断有没有装gd2
通过看phpinfo()的结果就可以,手册上的做法是:

如果gd2按装了,下边的代码可以运行
$im = imagecreatetruecolor ( 300, 200); 
$black = imagecolorallocate ($im, 0, 0, 0 ); 
$white = imagecolorallocate ($im, 255, 255, 255 ); 

imagefilledrectangle ($im,0, 0,399,99 ,$white); 
imagerectangle ($im,20, 20,250,190 ,$black); 

header ("Content-type: image/png" ); 
imagepng ($im); 

结果是在浏览器中看到一个黑色的框
##########################################################second
准备字体,如果不设置,看样子只能使用英文了,手册上的意思是,如果你想使用中文,小日本文等,需要设置一下(具体在哪个文件中设置,稍后有):
---windows平台,设置成字体所在的路径
例c:/windows/fonts
---linux
手册上说是让你到http://corefonts.sourceforge.net/ 下载个MS WEB什么包

这样子在windows,linux要不同的设置,实际上完全可以把字体放到一个目录里比如当前目录下的fonts
然后设置 在jpgraph.php中去掉
if (!defined('TTF_DIR')) {
       if (strstr( PHP_OS, 'WIN') ) {
       $sroot = getenv('SystemRoot');
           if( empty($sroot) ) {
           $t = new ErrMsgText();
           $msg = $t->Get(12,$file,$lineno);
           die($msg);
           }
       else {
       DEFINE('TTF_DIR', './fonts/fonts/');
           }
       } else {
       DEFINE('TTF_DIR','/usr/X11R6/lib/X11/fonts/truetype/');
       }
}

直接改成
DEFINE('TTF_DIR', './fonts/');

这样子就不用管什么系统了,都到当前目录下找,这样子需要把字体放到当前目录下的fonts中,
如果要支持中文,就在设置中文字体,在方法SetFont()中设置
SetFont(FF_SIMSUN,FS_BOLD);

实际上这个FF_SIMSUN指的是simhei.ttf这个字体,所以只要把这个字体
放到当前目录下的fonts中就可以了

另外一点备注:原文:http://www.lamper.cn/html/2007/01-21/57.html
||||||||如果你的文件编码是gb2312,SetFont方法的第一个参数为FF_SIMSUN即可正常显示汉字
如果你的文件编码为utf-8,修改方法如下:
代码:
方法一,在程序中修改
$title="中国人";
$title = iconv("UTF-8", "gb2312", $title);
$graph->title->Set($title);
方法二,修改源文件jpgraph_ttf.inc.php(而不是他们说的jpgraph.php,可以是版本不不一致的原因)
在第99-113行,注解掉
//       elseif( $aFF === FF_SIMSUN ) {
//           // Do Chinese conversion
//           if( $this->g2312 == null ) {
//           include_once 'jpgraph_gb2312.php' ;
//           $this->g2312 = new GB2312toUTF8();
//           }
//           return $this->g2312->gb2utf8($aTxt);
//       }
//       elseif( $aFF === FF_CHINESE ) {
//           if( !function_exists('iconv') ) {
//           JpGraphError::RaiseL(25006);
('Usage of FF_CHINESE (FF_BIG5) font family requires that your PHP setup has the iconv() function. By default this is not compiled into PHP (needs the 

"--width-iconv" when configured).');
//           }
//           return iconv('BIG5','UTF-8',$aTxt);
//       }

说明
jpgraph默认显示汉字时是把汉字编码认为gb2312,转化为utf-8以后再显示。
这样的话,如果你的文件编码是gb2312,SetFont方法的第一个参数为FF_SIMSUN即可
如果你是utf-8编码你还需要先把汉字编码转化为gb2312,这样你的汉字才可以正常显示
|||||||



##################################################################third
cache
设置是否启用cache在文件jpg-config.php

DEFINE( "USE_CACHE", true); 

然后去掉jpgrapth.php中的
if(USE_CACHE) {
       if (!defined('CACHE_DIR')) {
       if ( strstr( PHP_OS, 'WIN') ) {
           if( empty($_SERVER['TEMP']) ) {
           $t = new ErrMsgText();
           $msg = $t->Get(11,$file,$lineno);
           die($msg);
           }
           else {
           DEFINE('CACHE_DIR', $_SERVER['TEMP'] . '/');
           }
       } else {
           DEFINE('CACHE_DIR','/tmp/jpgraph_cache/');
       }
       }
}
elseif( !defined('CACHE_DIR') ) {
       DEFINE('CACHE_DIR', '');
}
直接改为在当前目录下的cache文件夹

DEFINE('CACHE_DIR','./cache/');

cache的作用时,如果为true会在设定的目录下生成一个图片,这样子再次请求这个页面时会直接读这个图片
既然有cache,按照经验,肯定有设置cache的时间,过了这个时间cache重新生成了。从手册上看了下在
$graph = new Graph(400,200,"auto",1);最后这个数据就是设置cacche设置的,是分钟数,如果不设置应该有个默认时间(猜的)(的确是,默认时间一小时)

第二,基本的搞明白了,看下手册上的3.5节
详细的按装步骤(Detailed steps to install JpGraph)
1.大体上是说
jpgraph支持gd1,及gd2,推荐你用gd2,如果你用gd2,确认PHP版本>5.0.1
2.解压下载的文件并放到一个目录中
3.在jpg-config.inc.php中设置TTF字体的路径,及cahce路径(还是这样子设置比较好,我在#####second是直接修改的jpgraph.php)
并且确认对cache路径有写的权限
4.检查jpgraph.php中的define的设置
5.检查是否对cache有写权限,同3一样

第四:原理知道了
需要什么样的效果,从自带的example中找
复制过来,数据自己定义就OK了。
,如果想改效果,颜色,可以找一个想改的,然后改参数
方法手册http://doc.async.com.br/jpgraph/ref/
第五:如果出现Cannot access protected property RotImage?::$iInterlace in /usr/local/src/jpgraph-2.2p/src/jpgraph.php on line 5815 ,我测试没,公司的服务器上有这样的提示。参照:
http://eaccelerator.net/ticket/214
==============================
转载请注明来源:http://hi.baidu.com/48238398
====================================================
另外一点备注,如果你的PHP是自己编译的,如freebsd系统中,如果还是出现乱码,解决方法:
一个编译选项引起的,如下:

--enable-gd-jis-conv         GD: Enable JIS-mapped Japanese font support.

只要关闭这个选项就正常了。
“–enable-gd-jis-conv”的参数十分可疑,Goo一下果然发现了很多乱码问题与这个编译参数有关……官方给出的参数说明是“GD: Enable JIS-mapped Japanese font support.”,也就是让GD支持日文编码的字库(可恶,为什么没有支持中文编码字库的编译选项……PHP也国籍歧视么= =b),说白了开启了这个选项的话GD就会把TTF字库中大于127的部分(即不属于标准拉丁文字库的部分)按照日文JIS的顺序来映射,那么用来映射中文字体的时候自然就变成乱码了
备注原文:
http://hi.baidu.com/thinkinginlamp/blog/item/c8d3d158fa5a4580810a1853.html
http://www.solaluna.cn/2007/09/05/532/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值