×î½üдµÄÒ»¸öGDͼ¿âÓÃÒÔÉú³ÉºáÊúÖù״ͼºÍÕÛÏßͼµÄÀà¿â,ËãÊÇÒ»¸ö½ÌѧÀý³Ì°É Class ImageReport{ 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;//×ÖÌåÑÕÉ« //--------²ÎÊýÉèÖú¯Êý function setImage($SizeX,$SizeY,$R,$G,$B,$Transparent){ $this->X=$SizeX; $this->Y=$SizeY; $this->R=$R; $this->G=$G; $this->B=$B; $this->TRANSPARENT=$Transparent; } function setItem($ArraySplit,$ItemArray,$ReportType,$Border){ $this->ARRAYSPLIT=$ArraySplit; $this->ITEMARRAY=$ItemArray; $this->REPORTTYPE=$ReportType; $this->BORDER=$Border; } function setFont($FontSize){ $this->FONTSIZE=$FontSize; } //----------------Ö÷Ìå function PrintReport(){ 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,0,0,$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×ø±êÖá function printXY(){ //»XY×ø±êÖá*/ $color=ImageColorAllocate($this->IMAGE,255-$this->R,255-$this->G,255-$this->B); $xx=$this->X/10; $yy=$this->Y-$this->Y/10; 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);//yÖá //YÖáÉÏ¿Ì¶È $rulerY=$this->Y-$this->BORDER; while($rulerY>$this->BORDER*2){ $rulerY=$rulerY-$this->BORDER; ImageLine($this->IMAGE,$this->BORDER,$rulerY,$this->BORDER-2,$rulerY,$color); } //XÖáÉÏ¿Ì¶È $rulerX=$rulerX+$this->BORDER; while($rulerX<($this->X-$this->BORDER*2)){ $rulerX=$rulerX+$this->BORDER; //ImageLine($this->IMAGE,$this->BORDER,10,$this->BORDER+10,10,$color); ImageLine($this->IMAGE,$rulerX,$this->Y-$this->BORDER,$rulerX,$this->Y-$this->BORDER+2,$color); } } //--------------ÊúÖùÐÎͼ function imageColumnS(){ $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->BORDER*2; //»ÖùÐÎͼ 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,$R,$G,$B); //ÖùÐÎ¸ß¶È $height=($this->Y-$this->BORDER)-($this->Y-$this->BORDER*2)*($item_array[$i]/$item_max); ImageFilledRectangle($this->IMAGE,$xx,$height,$xx+$this->BORDER,$this->Y-$this->BORDER,$color); ImageString($this->IMAGE,$this->FONTSIZE,$xx,$height-$this->BORDER,$item_array[$i],$this->FONTCOLOR); //ÓÃÓÚ¼ä¸ô $xx=$xx+$this->BORDER*2; } } //-----------ºáÖùÐÎͼ function imageColumnH(){ $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]); } $yy=$this->Y-$this->BORDER*2; //»ÖùÐÎͼ 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,$R,$G,$B); //ÖùÐγ¤¶È $leight=($this->X-$this->BORDER*2)*($item_array[$i]/$item_max); ImageFilledRectangle($this->IMAGE,$this->BORDER,$yy-$this->BORDER,$leight,$yy,$color); ImageString($this->IMAGE,$this->FONTSIZE,$leight+2,$yy-$this->BORDER,$item_array[$i],$this->FONTCOLOR); //ÓÃÓÚ¼ä¸ô $yy=$yy-$this->BORDER*2; } } //--------------ÕÛÏßͼ function imageLine(){ $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->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,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,$R,$G,$B); //ÖùÐÎ¸ß¶È $height_now=($this->Y-$this->BORDER)-($this->Y-$this->BORDER*2)*($item_array[$i]/$item_max); if($i!="0"){ ImageLine($this->IMAGE,$xx,$height_next,$xx+$this->BORDER,$height_now,$color); } ImageString($this->IMAGE,$this->FONTSIZE,$xx+$this->BORDER,$height_now-$this->BORDER/2,$item_array[$i],$this->FONTCOLOR); $height_next=$height_now; //ÓÃÓÚ¼ä¸ô $xx=$xx+$this->BORDER; } } //--------------Íê³É´òӡͼÐÎhttp://knowsky.com function printAll(){ ImageGIF($this->IMAGE); ImageDestroy($this->IMAGE); } //--------------µ÷ÊÔ function debug(){ 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=new ImageReport; $report->setImage(600,300,255,255,255,1);//²ÎÊý(³¤,¿í,±³Ó°É«R,G,B,ÊÇ·ñ͸Ã÷1»ò0) $temparray="50,25,100,250,180,200,150,220,200,150,50,25,100,250,180,200,150,220,200,150";//ÊýÖµ,ÓÃÖ¸¶¨·ûºÅ¸ô¿ª $report->setItem(',',$temparray,3,20);//²ÎÊý(·Ö¸ôÊýÖµµÄÖ¸¶¨·ûºÅ,ÊýÖµ±äÁ¿,Ñùʽ1ΪÊúÖùͼ2ΪºáÖùͼ3ΪÕÛÏßͼ,¾àÀë) $report->setFont(1);//×ÖÌå´óС1-10 $report->PrintReport(); //$report->debug();//µ÷ʽ֮Óà ?>
|