Home > Article > Backend Development > Class for generating horizontal and vertical column charts and line charts using GD library_PHP tutorial
I recently wrote a GD library to generate horizontal and vertical bar charts and line charts. It can be regarded as a teaching routine.
Class ImageReport{
var $X; //Image size X axis
var $Y;//Picture size Y axis
var $R;//Back color R value
var $G;//...G.
var $B;//...B .
var $TRANSPARENT;//Whether it is transparent 1 or 0
var $IMAGE;//Image object
//------------------ -
var $ARRAYSPLIT;//Specify the symbol used to separate values
var $ITEMARRAY;//Value
var $REPORTTYPE;//Chart type, 1 is vertical column 2 is horizontal column 3 It is polyline shape
var $BORDER;//distance
//------------------
var $FONTSIZE;//font size
var $FONTCOLOR;//Font color
//--------Parameter setting function
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;
}
//---------- -----Body
function PrintReport(){
Header( "Content-type: image/gif");
//Create canvas size
$this->IMAGE=ImageCreate( $this-> > background);
}else{
//If you don’t want transparency, you can fill the background color
ImageFilledRectangle($this->IMAGE,0,0,$this->X,$this-> Y,$background);
}
//Parameter font size and color
$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();
}
//----------Print the XY coordinate axis
function printXY(){
//Draw the XY coordinate axis*/
$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-axis
ImageLine($this->IMAGE,$this->BORDER,$this->Y -$this->BORDER,$this->X-$this->BORDER,$this->Y-$this->BORDER,$color);//y-axis
//Y On-axis scale
$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);
}
//Scale on the X axis
$rulerX=$rulerX+$this->BORDER;
while($rulerX<($this->
$rulerX=$rulerX+$this->BORDER;
//ImageLine($this->IMAGE,$this->BORDER,10,$this->BORDER+10,10,$ color);