×î½üдµÄÒ»¸ö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();//µ÷ʽ֮Óà
?>