您正在使用IPV4(44.192.247.184)访问本站 您本次共访问本站 1 次
 用户名: 密 码: 验证码:     用QQ登录本站
首页 软件 编程 笑话 知识 公告 台风 日历 计算器
[公益]文明驾车我带头,文明行路我带头,礼貌让座我带头       悟空收录网      

【腾讯云】云服务器等爆品抢先购,低至4.2元/月      
[公益] 节省一分零钱 献出一份爱心 温暖世间真情      
2023年 元宵节 4
2023年 情人节 13
2024年 元 旦 334
2024年 春 节 374
 
您现在的位置:首页 >> PHP >> 内容
本类新增
本类热门文章
PHP生成饼图的示例代码
内容摘要: 首先要把php_iconv.dll和inconv.dllCOPY到c:\winnt\system32下,直接上代码:?define('ANGLE_STEP',5);//定义画椭圆弧时的角度步长functiondraw_getdarkcolor($img,$clr)//求$clr对应的暗色{$rgb=imagecolorsforindex($img,$clr)......
首先要把php_iconv.dll和inconv.dllCOPY到c:\winnt\system32下,直接上代码:

<?

define("ANGLE_STEP",5);//定义画椭圆弧时的角度步长

functiondraw_getdarkcolor($img,$clr)//求$clr对应的暗色

{

$rgb=imagecolorsforindex($img,$clr);

returnarray($rgb["red"]/2,$rgb["green"]/2,$rgb["blue"]/2);

}

functiondraw_getexy($a,$b,$d)//求角度$d对应的椭圆上的点坐标

{

$d=deg2rad($d);

returnarray(round($a*Cos($d)),round($b*Sin($d)));

}

functiondraw_arc($img,$ox,$oy,$a,$b,$sd,$ed,$clr)//椭圆弧函数

{

$n=ceil(($ed-$sd)/ANGLE_STEP);

$d=$sd;

list($x0,$y0)=draw_getexy($a,$b,$d);

for($i=0;$i<$n;$i++)

{

$d=($d+ANGLE_STEP)>$ed?$ed:($d+ANGLE_STEP);

list($x,$y)=draw_getexy($a,$b,$d);

imageline($img,$x0+$ox,$y0+$oy,$x+$ox,$y+$oy,$clr);

$x0=$x;

$y0=$y;

}

}

functiondraw_sector($img,$ox,$oy,$a,$b,$sd,$ed,$clr)//画扇面

{

$n=ceil(($ed-$sd)/ANGLE_STEP);

$d=$sd;

list($x0,$y0)=draw_getexy($a,$b,$d);

imageline($img,$x0+$ox,$y0+$oy,$ox,$oy,$clr);

for($i=0;$i<$n;$i++)

{

$d=($d+ANGLE_STEP)>$ed?$ed:($d+ANGLE_STEP);

list($x,$y)=draw_getexy($a,$b,$d);

imageline($img,$x0+$ox,$y0+$oy,$x+$ox,$y+$oy,$clr);

$x0=$x;

$y0=$y;

}

imageline($img,$x0+$ox,$y0+$oy,$ox,$oy,$clr);

list($x,$y)=draw_getexy($a/2,$b/2,($d+$sd)/2);

imagefill($img,$x+$ox,$y+$oy,$clr);

}

functiondraw_sector3d($img,$ox,$oy,$a,$b,$v,$sd,$ed,$clr)//3d扇面

{

draw_sector($img,$ox,$oy,$a,$b,$sd,$ed,$clr);

if($sd<180)

{

list($R,$G,$B)=draw_getdarkcolor($img,$clr);

$clr=imagecolorallocate($img,$R,$G,$B);

if($ed>180)$ed=180;

list($sx,$sy)=draw_getexy($a,$b,$sd);

$sx+=$ox;

$sy+=$oy;

list($ex,$ey)=draw_getexy($a,$b,$ed);

$ex+=$ox;

$ey+=$oy;

imageline($img,$sx,$sy,$sx,$sy+$v,$clr);

imageline($img,$ex,$ey,$ex,$ey+$v,$clr);

draw_arc($img,$ox,$oy+$v,$a,$b,$sd,$ed,$clr);

list($sx,$sy)=draw_getexy($a,$b,($sd+$ed)/2);

$sy+=$oy+$v/2;

$sx+=$ox;

imagefill($img,$sx,$sy,$clr);

}

}

functiondraw_getindexcolor($img,$clr)//RBG转索引色

{

$R=($clr>>16)&0xff;

$G=($clr>>8)&0xff;

$B=($clr)&0xff;

returnimagecolorallocate($img,$R,$G,$B);

}

//绘图主函数,并输出图片

//$datLst为数据数组,$datLst为标签数组,$datLst为颜色数组

//以上三个数组的维数应该相等

functiondraw_img($datLst,$labLst,$clrLst,$a=250,$b=120,$v=20,$font=10)

{

$ox=5+$a;

$oy=5+$b;

$fw=imagefontwidth($font);

$fh=imagefontheight($font);

$n=count($datLst);//数据项个数

$w=10+$a*2;

$h=10+$b*2+$v+($fh+2)*$n;

$img=imagecreate($w,$h);

//转RGB为索引色

for($i=0;$i<$n;$i++)

$clrLst[$i]=draw_getindexcolor($img,$clrLst[$i]);

$clrbk=imagecolorallocate($img,0xff,0xff,0xff);

$clrt=imagecolorallocate($img,0x00,0x00,0x00);

//填充背景色

imagefill($img,0,0,$clrbk);

//求和

$tot=0;

for($i=0;$i<$n;$i++)

$tot+=$datLst[$i];

$sd=0;

$ed=0;

$ly=10+$b*2+$v;

for($i=0;$i<$n;$i++)

{

$sd=$ed;

$ed+=$datLst[$i]/$tot*360;

//画圆饼

draw_sector3d($img,$ox,$oy,$a,$b,$v,$sd,$ed,$clrLst[$i]);//$sd,$ed,$clrLst[$i]);

//画标签

imagefilledrectangle($img,5,$ly,5+$fw,$ly+$fh,$clrLst[$i]);

imagerectangle($img,5,$ly,5+$fw,$ly+$fh,$clrt);

//imagestring($img,$font,5+2*$fw,$ly,$labLst[$i].":".$datLst[$i]."(".(round(10000*($datLst[$i]/$tot))/100)."%)",$clrt);

$str=iconv("GB2312","UTF-8",$labLst[$i]);

ImageTTFText($img,$font,0,5+2*$fw,$ly+13,$clrt,"C:\WINNT\Fonts\simsun.ttc",$str.":".$datLst[$i]."(".(round(10000*($datLst[$i]/$tot))/100)."%)");

$ly+=$fh+2;

}

//输出图形

header("Content-type:image/png");

//输出生成的图片

$imgFileName="../temp/".time().".png";

imagepng($img,$imgFileName);

}

$datLst=array(30,10,20,20,10,20,10,20);//数据

$labLst=array("中国科技大学","安徽理工大学","清华大学","北京大学","南京大学","上海大学","河海大学","中山大学");//标签

$clrLst=array(0x99ff00,0xff6666,0x0099ff,0xff99ff,0xffff99,0x99ffff,0xff3333,0x009999);

//画图

draw_img($datLst,$labLst,$clrLst);

?>

要注意的是,ImageTTFText函数中的字体C:\WINNT\Fonts\simsun.ttc

版权声明:本内容来源于网络,如有侵犯您的版权,请联系站长,本站收到您的信息后将及时处理。
上一篇:PHP替换Word中变量并导出PDF图片 下一篇:PHP先等比缩放再无损裁剪图片
发布日期:2023/1/8
手机扫二维码直达本页
发布时间:10:10:25
点  击:38
录  入:齐天大圣
相关文章
Baidu

YiJiaCMS 6.3.5.220928(MSSQL) 闽ICP备05000814号-1
本空间由腾讯云(轻量应用服务器)提供,百度云加速提供加速防护
Copyright©2000-2023