调用柱状图类出错
时间: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();
?>
<?
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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28