-
- 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;//フォントの色
- var $numX = 1;//X 軸の開始スケール値
- var $stepX = 1;//X 軸の各スケール間隔値
-
- //-- ------パラメータ設定関数
- function setImage($SizeX,$SizeY,$R,$G,$B,$Transparent){
- $this->X=$SizeX ;
- $this->Y =$SizeY;
- $this->G=$G;
- $this-> ;TRANSPARENT=$Transparent;
- }
- function setItem($ArraySplit,$ItemArray,$ReportType,$Border){
- $this->>ITEMARRAY=$ItemArray; ->REPORTTYPE=$ReportType;
- $this->BORDER=$Border;
- function setFont($FontSize){
- $this->FONTSIZE=$FontSize }
- //X 軸のスケール値設定
- function setX($numX = 1 , $stepX = 1){
- $this->numX = $numX;
- $this->stepX = $stepX;
- }
- //------ --------- 本体
- 関数 PrintReport(){
- //キャンバスサイズ作成
- $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);
- スイッチ ($this->REPORTTYPE) {
- ケース "0":
- ケース "1":
- $this->imageColumnS();
- ケース "2":
- ケース; "3":
- $this->imageLine();
- ブレーク;
- ケース "4 ":
- $this->imageCircle();
- $this->printXY(); this->printAll();
- }
- //-------- ---XY 座標軸を印刷する
- function printXY(){
- $rulerY = $rulerX = "";
- // XY 座標軸*/
- $color=ImageColorAllocate($this->IMAGE,255-$this->R,255-$this->G,255-$this->B); $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 軸
- imagestring($this->IMAGE, $this->FONTSIZE, $this->BORDER- 2, $this->Y-$this->BORDER+5, "0", $color);
- //Y 軸のスケール
- $rulerY=$this->Y-$this->BORDER ;
- $i = 0;
- while($rulerY>$this->BORDER*2){
- $rulerY =$rulerY-$this->BORDER;
- ImageLine($this->IMAGE,$this->BORDER,$rulerY,$this->BORDER-2,$rulerY,$color); ($this->REPORTTYPE == 2){//横棒グラフ
- imagestring($this->IMAGE, $this->FONTSIZE, $this->BORDER-10, $rulerY-2-$this ->BORDER*($i+.5), $this->numX, $color);
- $this->numX += $this->stepX;
- }
- $i++;
- }
- // while($rulerXX-$this->BORDER*2)){
- $rulerX=$rulerX+$this->BORDER
- //ImageLine($this->BORDER; IMAGE,$ this->BORDER,10,$this->BORDER+10,10,$color);
- ImageLine($this->IMAGE,$rulerX,$this->Y-$this-> ;BORDER, $rulerX,$this->Y-$this->BORDER+2,$color);
-
- //スケール値
- if($this->REPORTTYPE == 1){//垂直列chart
- 画像文字列 ($this->IMAGE, $this->FONTSIZE, $rulerX-2+$this->BORDER*($i+.5), $this->Y-$this->BORDER +5, $this->numX, $color);
- $this->numX += $this->stepX;
- }else if($this->REPORTTYPE == 3){//折線图
- imagestring($this->IMAGE, $this->FONTSIZE, $rulerX-2, $this->Y-$this- >BORDER+5, $this->numX, $color);
- $this->numX += $this->stepX;
- }
- $i++;
- }
- }
-
- //--- -----------竖柱形図
- function imageColumnS(){
- $item_array=Split($this->ARRAYSPLIT,$this->ITEMARRAY);
- $num=Count($item_array);
- $item_max=0;
- for ($i=0;$i $item_max=Max($item_max,$item_array[$i]);
- }
- $xx=$this->BORDER*2;
- //画柱形図
- for ($i=0;$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=ランド(50,200);
- $B=ランド(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 $item_max=Max($item_max,$item_array[$i]);
- }
- $yy=$this->Y-$this ->ボーダー*2;
- //画柱形図
- for ($i=0;$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=ランド(50,200);
- $B=ランド(50,200);
- }
- $color=ImageColorAllocate($this->IMAGE,$R,$G,$B);
- //柱形長さ
- $leight=($this->X-$this->BORDER*2)*($item_array[$i]/$item_max);
- $leight = $leight BORDER ? $this->BORDER : $leight;
- 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 $item_max=Max($item_max,$item_array[$i]);
- }
- $xx=$this->BORDER;
- //画柱形図
- for ($i=0;$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=ランド(50,200);
- $B=ランド(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-$this->BORDER,$height_next,$xx,$height_now,$color);
-
- ImageString($this->IMAGE,$this->FONTSIZE,$xx+2,$height_now-$this->BORDER/2,$item_array[$i],$this->FONTCOLOR);
- $height_next=$height_now;
- //間隔を空けるために使用します
- $xx=$xx+$this->BORDER;
- }
- }
- //--------------饼状態図
- function imageCircle(){
- $total = 0;
- $item_array=Split($this->ARRAYSPLIT,$これ->ITEMARRAY);
- $num=Count($item_array);
- $item_max=0;
- for ($i=0;$i $item_max=Max($item_max,$item_array[$i]);
- $total += $item_array[$i];
- }
- $yy=$this->Y-$this->BORDER*2;
-
- //画饼状態図の阴影部分
- $e=0;
- for ($i=0;$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=ランド(50,200);
- $B=ランド(50,200);
- }
- $s=$e;
- $leight=$item_array[$i]/$total*360;
- $e=$s+$leight;
- $color=ImageColorAllocate($this->IMAGE,$R, $G,$B);
- $colorarray[$i]=$color;
- //画圆
- for ($j = 90; $j > 70; $j--) imagefilledarc($this->IMAGE, 110, $j, 200, 100, $s, $e, $color 、IMG_ARC_PIE);
- //imagefilledarc($this->IMAGE, 110, 70, 200, 100, $s, $e, $color, IMG_ARC_PIE);
- //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;
- }
-
- //画饼状態図の表面部分
- $e=0;
- for ($i=0;$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=ランド(50,200);
- $B=ランド(50,200);
- }
- $s=$e;
- $leight=$item_array[$i]/$total*360;
- $e=$s+$leight;
- //$color=$colorarray[$i];
- $color =ImageColorAllocate($this->IMAGE,$R,$G,$B);
- //画圆
- //for ($j = 90; $j > 70; $j--) imagefilledarc($this->IMAGE, 110, $j, 200, 100, $s, $e, $color, IMG_ARC_PIE);
- imagefilledarc($this->IMAGE, 110, 70, 200, 100, $s, $e, $color, IMG_ARC_PIE);
- }
- }
- //-------------- 打印画像の完成
- function printAll(){
- ImagePNG($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->debug();//调式之用
- /*
- Header( "Content-type:image/png");
- $report=new ImageReport;
- $report ->setImage(600,500,255,255,255,1);//パラメータ(长,高,背影色R,G,B,有無透明1または0)
- $temparray="0,260,400,124,48,720,122,440,475";//数值,指定記号間隔を使用开
- $report->setItem(',',$temparray,3,23);//パラメータ(分間隔数の指定記号,数值变量,样式1は竖柱、図2は横柱、図3は折れ線図4饼図,距離)
- $report->setFont(1);//文字大小1-10
- //$report->setX(1,1);//設置X轴刻度值(起始刻度值=1,刻度间間隔值=1)
- $report->PrintReport();
- */
- ?>
复制發
|