<?php ClassImageReport{ var$X;//图片大小X轴 var$Y;//图片大小Y轴 var$R;//背影色R值 var$G;//...G. var$B;//...B. var$TRANSPARENT;//是否透明1或0 var$IMAGE;//图片对像 //------------------- var$ARRAYSPLIT;//指定用于分隔数值的符号 var$ITEMARRAY;//数值 var$REPORTTYPE;//图表类型,1为竖柱形2为横柱形3为折线形 var$BORDER;//距离 //------------------- var$FONTSIZE;//字体大小 var$FONTCOLOR;//字体颜色 //--------参数设置函数 functionsetImage($SizeX,$SizeY,$R,$G,$B,$Transparent){ $this->X=$SizeX; $this->Y=$SizeY; $this->R=$R; $this->G=$G; $this->B=$B; $this->TRANSPARENT=$Transparent; } functionsetItem($ArraySplit,$ItemArray,$ReportType,$Border){ $this->ARRAYSPLIT=$ArraySplit; $this->ITEMARRAY=$ItemArray; $this->REPORTTYPE=$ReportType; $this->BORDER=$Border; } functionsetFont($FontSize){ $this->FONTSIZE=$FontSize; } //----------------主体 functionPrintReport(){ Header("Content-type:image/gif"); //建立画布大小 $this->IMAGE=ImageCreate($this->X,$this->Y); //设定画布背景色 $background=ImageColorAllocate($this->IMAGE,$this->R,$this->G,$this->B); if($this->TRANSPARENT=="1"){ //背影透明 Imagecolortransparent($this->IMAGE,$background); }else{ //如不要透明时可填充背景色 ImageFilledRectangle($this->IMAGE,$this->X,$this->Y,$background); } //参数字体文小及颜色 $this->FONTCOLOR=ImageColorAllocate($this->IMAGE,255-$this->R,255-$this->G,255-$this->B); Switch($this->REPORTTYPE){ case"0": break; case"1": $this->imageColumnS(); break; case"2": $this->imageColumnH(); break; case"3": $this->imageLine(); break; } $this->printXY(); $this->printAll(); } //-----------打印XY坐标轴 functionprintXY(){ //画XY坐标轴/ $color=ImageColorAllocate($this->IMAGE,255-$this->B); $xx=$this->X/10; $yy=$this->Y-$this->Y/10; ImageLine($this->IMAGE,$this->BORDER,$this->Y-$this->BORDER,$color);//X轴 ImageLine($this->IMAGE,$this->X-$this->BORDER,$color);//y轴 //Y轴上刻度 $rulerY=$this->Y-$this->BORDER; while($rulerY>$this->BORDER2){ $rulerY=$rulerY-$this->BORDER; ImageLine($this->IMAGE,$rulerY,$this->BORDER-2,$color); } //X轴上刻度 $rulerX=$rulerX+$this->BORDER; while($rulerX<($this->X-$this->BORDER2)){ $rulerX=$rulerX+$this->BORDER; //ImageLine($this->IMAGE,10,$this->BORDER+10,$color); ImageLine($this->IMAGE,$rulerX,$this->Y-$this->BORDER+2,$color); } } //--------------竖柱形图 functionimageColumnS(){ $item_array=Split($this->ARRAYSPLIT,$this->ITEMARRAY); $num=Count($item_array); $item_max=0; for($i=0;$i<$num;$i++){ $item_max=Max($item_max,$item_array[$i]); } $xx=$this->BORDER2; //画柱形图 for($i=0;$i<$num;$i++){ srand((double)microtime()1000000); if($this->R!=255&&$this->G!=255&&$this->B!=255){ $R=Rand($this->R,200); $G=Rand($this->G,200); $B=Rand($this->B,200); }else{ $R=Rand(50,200); $G=Rand(50,200); $B=Rand(50,200); } $color=ImageColorAllocate($this->IMAGE,$B); //柱形高度 $height=($this->Y-$this->BORDER)-($this->Y-$this->BORDER2)($item_array[$i]/$item_max); ImageFilledRectangle($this->IMAGE,$xx,$height,$xx+$this->BORDER,$color); ImageString($this->IMAGE,$this->FONTSIZE,$height-$this->BORDER,$item_array[$i],$this->FONTCOLOR); //用于间隔 $xx=$xx+$this->BORDER2; } } //-----------横柱形图 functionimageColumnH(){ $item_array=Split($this->ARRAYSPLIT,$item_array[$i]); } $yy=$this->Y-$this->BORDER2; //画柱形图 for($i=0;$i<$num;$i++){ srand((double)microtime()1000000); if($this->R!=255&&$this->G!=255&&$this->B!=255){ $R=Rand($this->R,$B); //柱形长度 $leight=($this->X-$this->BORDER2)($item_array[$i]/$item_max); ImageFilledRectangle($this->IMAGE,$yy-$this->BORDER,$leight,$yy,$leight+2,$this->FONTCOLOR); //用于间隔 $yy=$yy-$this->BORDER2; } } //--------------折线图 functionimageLine(){ $item_array=Split($this->ARRAYSPLIT,$item_array[$i]); } //$xx=$this->BORDER; //画柱形图 for($i=0;$i<$num;$i++){ srand((double)microtime()1000000); if($this->R!=255&&$this->G!=255&&$this->B!=255){ $R=Rand($this->R,$B); //柱形高度 $height_now=($this->Y-$this->BORDER)-($this->Y-$this->BORDER2)($item_array[$i]/$item_max); if($i!="0"){ ImageLine($this->IMAGE,$height_next,$height_now,$color); } ImageString($this->IMAGE,$height_now-$this->BORDER/2,$this->FONTCOLOR); $height_next=$height_now; //用于间隔 $xx=$xx+$this->BORDER; } } //--------------完成打印图形http://knowsky.com functionprintAll(){ ImageGIF($this->IMAGE); ImageDestroy($this->IMAGE); } //--------------调试 functiondebug(){ echo"X:".$this->X." Y:".$this->Y; echo" BORDER:".$this->BORDER; $item_array=split($this->ARRAYSPLIT,$this->ITEMARRAY); $num=Count($item_array); echo" 数值个数:".$num." 数值:"; for($i=0;$i<$num;$i++){ echo" ".$item_array[$i]; } } } $report=newImageReport; $report->setImage(600,300,255,1);//参数(长,宽,背影色R,G,B,是否透明1或0) $temparray="50,25,100,250,180,200,150,220,50,150";//数值,用指定符号隔开 $report->setItem(',',$temparray,3,20);//参数(分隔数值的指定符号,数值变量,样式1为竖柱图2为横柱图3为折线图,距离) $report->setFont(1);//字体大小1-10 $report->PrintReport(); //$report->debug();//调式之用 ?>
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|