+ -
当前位置:首页 → 问答吧 → 调用柱状图类出错

调用柱状图类出错

时间:2010-01-27

来源:互联网

我在柱状图类当前页面调用该类时不会出错,但在另一个页面调用会出错呢,出错提示都是乱码?请各位帮帮忙啊??

<?
 class ImageReport
 {
  private $x;//图片的宽度
 private $y;//图片的高度
 private $border;//间隔的距离
 private $data;//分析的数据
 private $fontsize=1;//字体大小
 private $image;//图片对象
 private $numx = 1;//X轴起始刻度值   
 private $stepx = 1;//X轴每一个刻度间隔值  
 private $datakey;
 private $datavalue;
 function setImage($x,$y,$border,$data)
 {
  $this->x=$x;
  $this->y=$y;
  $this->data=$data;
  $this->border=$border;
 }
   function createImage()
   {
     //图片大小
     $this->image=imagecreate($this->x,$this->y);
  //图片背景色
  $bgcolor=imagecolorallocate($this->image,255,255,255);
  imagefilledrectangle($this->image,0,0,$this->x,$this->y,$bgcolor);
  //字体的颜色
  $this->fontcolor=imagecolorallocate($this->image,rand(0,255),rand(0,255),rand(0,255)); 
  $this->image();
 $this->printxy();  
  $this->printimage(); 
   }
   function image()
   {
     $num=sizeof($this->data);
  $maxNum=max($this->data);
  foreach($this->data as $k=>$v)
  {
   $this->datakey[]=$k;
   $this->datavalue[]=$v;
  }
  $xx=$this->border*2;
  for($i=0;$i<$num;$i++)
  {
   $fontcolor=imagecolorallocate($this->image,0,0,0);
  $color=imagecolorallocate($this->image,rand(0,255),rand(0,255),rand(0,255));
  $height=($this->y-$this->border)-($this->y-$this->border)*($this->datavalue[$i]/($maxNum+20));
  imagefilledrectangle($this->image,$xx,$height,$xx+$this->border,$this->y-$this->border,$color);
  imagestring($this->image,$this->fontsize,$xx,$height-$this->border,$this->datavalue[$i],$fontcolor);   
  $xx=$xx+$this->border*2;
  }
 }
  function printimage()
  {
   imagepng($this->image);
  imagedestroy($this->image);
  }
 function printxy()
 {
  $rulerx=$rulery="";
  $color=imagecolorallocate($this->image,0,0,0);
  $xx=$this->x/10;
  $yy=$this->y-$this->y/10; 
  //y轴
  imageline($this->image,$this->border,$this->border,$this->border,$this->y-$this->border,$color);
  //x轴
  imageline($this->image,$this->border,$this->y-$this->border,$this->x-$this->border,$this->y-$this->border,$color);
  imagestring($this->image,$this->fontsize,$this->border-2,$this->y-$this->border+5,"0",$color);
  //y轴上刻度
  $rulery=$this->y-$this->border;
  $maxNum=max($this->data)+20;
  $i=0;
  $ry=($this->y-$this->border)/10;
  for($i=1;$i<=10;$i++)
  {
   imageline($this->image,$this->border,$ry*$i,$this->border-2,$ry*$i,$color);
   imagestring($this->image,2,$this->border-23,$ry*$i,$maxNum-$maxNum*$i/10,$color);
  }
  //x轴上刻度
  $rulerx=$rulerx+$this->border;
  $i=0;
  while($rulerx<($this->x-$this->border*2))
  {
   $rulerx=$rulerx+$this->border;
   imageline($this->image,$rulerx,$this->y-$this->border,$rulerx,$this->y-$this->border+2,$color);
   //x轴上的刻度值,可修改
   imagestring($this->image,$this->fontsize,$rulerx-10+$this->border*($i+0.5),$this->y-$this->border+5,$this->datakey[$i],$color);
   $this->numx+=$this->stepx;
   $i++;
  }
 }
}
$report=new ImageReport();
$report->setImage(600,500,23,array(82.6,79,85,45,69,63,98));
$report->createImage();
?>


[ 此帖被ipqvkpl在2010-01-27 10:21重新编辑 ]

作者: ipqvkpl   发布时间: 2010-01-27

相关阅读 更多