PHP语言之php做饼图的函数
小标 2018-09-14 来源 : 阅读 1059 评论 0

摘要:本文主要向大家介绍了PHP语言之php做饼图的函数,通过具体的内容向大家展示,希望对大家学习php语言有所帮助。

本文主要向大家介绍了PHP语言之php做饼图的函数,通过具体的内容向大家展示,希望对大家学习php语言有所帮助。

######## 
bimage.php3 
######## 
/* 
函数说明 
$chartdata:数据,是数组元素 
$chartfont:字号 
$chartdiameter:决定饼的大小(要看你饿不饿了,呵呵) 
$chartlabel:标题,也是数组元素 
$colorslice:颜色数组,例如$tmp=array255,255,255);$colorslic=array($tmp); 
$colorborder:边框颜色,数组 
$colortext :文本颜色,数组 
$colorbody:背景颜色,数组 
$file:输出图片文件名*/ 
function bimage($chartdata, 
$chartfont, 
$chartdiameter , 
$chartlabel , 
$colorslice, 
$colorbody , 
$colorborder, 
$colortext , 
$file 
) 
{ 
$chartdiameter=150; 

$chartfontheight=imagefontheight($chartfont); 
$d1=10;$d2=20;$d3=30;$d4=40;$d5=50; 
$chartdata=array($d1,$d2,$d3,$d4,$d5); 
$chartlabel=array("D1","D2","D3","D4","D5"); 
$chartwidth=$chartdiameter+20; 
$chartheight=$chartdiameter+20+(($chartfontheight+2)*count($chartdata)); 
header("content-type:image/gif"); 
$image=imagecreate($chartwidth,$chartheight); 
$colorbody =imagecolorallocate ($image,$colorbody[0],$colorbody[1],$colorbody[2]); 
$colortext =imagecolorallocate ($image,$colortext[0],$colortext[1],$colortext[2]); 
$colorborder =imagecolorallocate ($image,$colorborder[0],$colorborder[1],$colorborder[2]); 
for ($i=0;$i { 
$t=imagecolorallocate($image,$colorslice[$i][0],$colorslice[$i][1],$colorslice[$i][2]); 
$colorslice[$i]=$t; 
} 
for($i=0;$i { 
$charttotal+=$chartdata[$i]; 
} 
$chartcenterx=$chartdiameter/2+10; 
$chartcentery=$chartdiameter/2+10; 
$degrees=0; 
for($i=0;$i { 
$startdegrees=round($degrees); 
$degrees+=(($chartdata[$i]/$charttotal)*360); 
$enddegrees=round($degrees); 
$currentcolor=$colorslice[$i%(count($colorslice))]; 
imagearc($image , 
$chartcenterx, 
$chartcentery, 
$chartdiameter, 
$chartdiameter, 
$startdegrees, 
$enddegrees, 
$currentcolor); 
list($arcx,$arcy)=circle_point($startdegrees,$chartdiameter); 
imageline($image, 
$chartcenterx, 
$chartcentery, 
floor($chartcenterx+$arcx), 
floor($chartcentery+$arcy), 
$currentcolor ); 
list($arcx,$arcy)=circle_point($enddegrees,$chartdiameter); 

imageline($image, 
$chartcenterx, 
$chartcentery, 
ceil($chartcenterx+$arcx), 
ceil($chartcentery +$arcy), 
$currentcolor); 

$midpoint=round((($enddegrees-$startdegrees)/2)+$startdegrees); 
list($arcx,$arcy)= circle_point ( $midpoint, $chartdiameter/2); 
imagefilltoborder($image, 
floor($chartcenterx+$arcx), 
floor($chartcentery+$arcy), 
$currentcolor, 
$currentcolor); 
} 
imagearc($image, 
$chartcenterx, 
$chartcentery, 
$chartdiameter, 
$chartdiameter, 
0,360, 
$colorborder); 
imagefilltoborder ($image, 
floor($chartcenterx +( $chartdiameter /2)+2), 
$chartcentery , 
$colorborder, 
$colorborder ); 
for ($i=0;$i { 
$currentcolor=$colorslice[$i%(count($colorslice))]; 
$liney=$chartdiameter+20+($i*($chartfontheight+2)); 
imagerectangle ($image, 
10, 
$liney, 
20+$chartfontheight, 
$liney+$chartfontheight, 
$colorbody); 
imagefilltoborder($image, 
12, 
$liney+2, 
$colorbody, 
$currentcolor); 
imagestring($image, 
$chartfont, 
40+$chartfontheight, 
$liney, 
"$chartlabel[$i]:$chartdata[$i]", 
$colortext); 

} 

imagegif ($image,$file); 

} 

function radians($degrees) 
{ 
return($degrees*(pi()/180.0)); 
} 
function circle_point($degrees,$diameter) 
{ 
$x=cos(radians($degrees))*($diameter/2); 
$y=sin(radians($degrees))*($diameter/2); 
return (array($x,$y)); 
} 
?> 

########### 
这是一个调用的例子 
########### 

include("bfunc.php3"); 
$chartdiameter=250; 
$chartfont=5; 
$d1=10;$d2=20;$d3=30;$d4=40;$d5=50; 
$chartdata=array($d1,$d2,$d3,$d4,$d5); 
$chartlabel=array("D1","D2","D3","D4","D5"); 

$colorbody=array(0xff,0xff,0xff); 
$colorborder=array(0x00,0x00,0x00); 
$colortext=array(0xff,0xff,0xff); 

$color1=array(0xff,0x00,0x00); 
$color2=array(0x00,0xff,0x00); 
$color3=array(0x00,0x00,0xff); 
$color4=array(0xff,0xff,0x00); 
$color5=array(0xff,0x00,0xff); 
$colorslice=array($color1 ,$color2,$color3,$color4,$color5); 
$file="tj.gif" 
bimage($chartdata, 
$chartfont, 
$chartdiameter , 
$chartlabel , 
$colorslice, 
$colorbody , 
$colorborder, 
$colortext , 
$file ) 
?>

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言PHP频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved