Gpgraph的使用与配置--第二篇

按照Gpgraph的使用与配置--第一篇的方法使用Gpgraph,运行代码发现只能正常运行一次,再次运行代码时发现浏览器不能正常输出图片。纠结半天后发现是缓存的问题。

找到jpg-config.inc.php的第38行:define('CACHE_DIR','/jpgraph_cache/');这个CACHE_DIR是设置的缓存目录,找到这个目录。我的是在C盘下,打开C盘会发现多了个tmp文件夹,打开tmp会发现有个jpgraph_cache文件夹,这个就是缓存文件。通过查看属性会发现tmp的文件夹为只读。这也就是问题所在,再次运行代码时,由于缓存是只读的,无法写入,由于权限问题导致的程序不能再次正常运行。临时的解决方法就是可以把tmp文件夹删掉即可。但是这并不是最根本的解决方法,因为这么做,每次运行代码后都要去删除tmp缓存文件夹,太麻烦。解决方法就是禁止缓存输出。禁止缓存输出的原因是在PHP开发期间,我们需要能够看到jpgraph类库潜在的错误信息,而开启缓存会阻止错误信息及时出现。

解决步骤:

1. 打开php.ini配置文件,找到output_buffering选项,并将选项修改为

output_buffering =xx,也就是注释掉缓存输出。

2. 打开jpg-config.inc.php,修改相应的缓存配置项:

第38行改为:// define('CACHE_DIR','/jpgraph_cache/');

第77行改为:define('USE_CACHE',false);

3. 打开jpgraph_ttf.inc.php

183--191if内的代码注释掉,直接返回$aTxt。代码:

 elseif( $aFF === FF_SIMSUN ) {
            // Do Chinese conversion
           // if( $this->g2312 == null ) {
             //   include_once'jpgraph_gb2312.php' ;
              //  $this->g2312 = newGB2312toUTF8();
           // }
          //  return$this->g2312->gb2utf8($aTxt);

return $aTxt;

}

4. 将运行代码中的汉子格式转换注释掉。

//$title = iconv("UTF-8", "gb2312",$title);

5. 运行代码:

$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");
//创建标题
$title = "中国南京";
$graph->title->Set($title);//已经不需要字体转换了
//设置X坐标轴文字
$a=array("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月");
$graph->xaxis->SetTickLabels($a); 
//设置字体
$graph->title->SetFont(FF_SIMSUN);
$graph->xaxis->SetFont(FF_SIMSUN); 
//输出矩形图表
$graph->Stroke();

运行后即可看到浏览器输出的图片:

Gpgraph的使用与配置--第二篇_第1张图片


如果运行代码过程中出现了下面的错误提示:

JpGraph Error: HTTP headers have already been sent.
Caused by output from file jpgraph_gb2312.php at line 1516.

解决方法就是上述的步骤3,直接返回$aTxt


你可能感兴趣的:(Gpgraph的使用与配置--第二篇)