php生成扇形比例图实例


Posted in PHP onNovember 06, 2013

我们在很多网站会看到一些图形的百分比显示图,像三个地区所占地多少或者是成绩等,给大家介绍一款用php生成的扇形比例百分比显示程序代码,不过使用它首先得有phpGD库支持。

<?php
//填充图表的参数
$ChartDiameter = 60; //图表直径
$ChartData = array(30,70);//用于生成图表的数据,可通过数据库来取得来确定也可以多个不过和颜色数组对应
//把角度转换为弧度
function radians($degrees){return($degrees*(pi()/180.0));}
//取得在圆心为(0,0)圆上 x,y点的值
function circle_point($degrees,$diameter){$x=cos(radians($degrees))*($diameter/2);$y=sin(radians($degrees))*($diameter/2);return (array($x,$y));}
//确定图形的大小
$ChartWidth = $ChartDiameter + 20;
$ChartHeight = $ChartDiameter + 20;
//确定统计的总数
$ChartTotal = “”;
for($index = 0;$index < count($ChartData);$index++){
$ChartTotal += $ChartData[$index];
}
$ChartCenterX = $ChartDiameter/2 + 10;
$ChartCenterY = $ChartDiameter/2 + 10;
//生成空白图形
$image = imagecreate($ChartWidth, $ChartHeight);
//分配颜色
$colorBody = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
$colorBorder = imagecolorallocate($image, 0×00, 0×00, 0×00);
$colorText = imagecolorallocate($image, 0×00, 0×00, 0×00);
$colorSlice[] = imagecolorallocate($image, 0xFF, 0×00, 0×00);//这里是和你上面写的数组对应的颜色
$colorSlice[] = imagecolorallocate($image, 0×00, 0xFF, 0×00);
//填充背境
imagefill($image, 0, 0, $colorBody);
//画每一个扇形
$Degrees = 0;
for($index = 0; $index < count($ChartData); $index++){
$StartDegrees = round($Degrees);
$Degrees += (($ChartData[$index]/$ChartTotal)*360);
$EndDegrees = round($Degrees);
$CurrentColor = $colorSlice[$index%(count($colorSlice))];
//画图F
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);
}
//到此脚本 已经生了一幅图像的,现在需要的是把它发到浏览器上,重要的一点是要将标头发给浏览器,让它知道是一个GIF文件。不然的话你只能看到一堆奇怪的乱码
header(“Content-type: image/png”);
imagegif($image);
?>
 

PHP 相关文章推荐
在字符串指定位置插入一段字符串的php代码
Feb 16 PHP
php获取post中的json数据的实现方法
Jun 08 PHP
UCenter 批量添加用户的php代码
Jul 17 PHP
php删除数组元素示例分享
Feb 17 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
Jun 26 PHP
php中try catch捕获异常实例详解
Nov 21 PHP
Zend Framework校验器Zend_Validate用法详解
Dec 09 PHP
浅谈php(codeigniter)安全性注意事项
Apr 06 PHP
Yii2使用表单上传文件的实例代码
Aug 03 PHP
PHP实现的策略模式简单示例
Aug 25 PHP
解决laravel session失效的问题
Oct 14 PHP
解决laravel 表单提交-POST 异常的问题
Oct 15 PHP
php多用户读写文件冲突的解决办法
Nov 06 #PHP
php生成图形(Libchart)实例
Nov 06 #PHP
php ZipArchive压缩函数详解实例
Nov 06 #PHP
php根据分类合并数组的方法实例详解
Nov 06 #PHP
php foreach循环中使用引用的问题
Nov 06 #PHP
php用正则表达式匹配中文实例详解
Nov 06 #PHP
php引用传值实例详解学习
Nov 06 #PHP
You might like
聊天室php&amp;mysql(三)
2006/10/09 PHP
php绝对路径与相对路径之间关系的的分析
2010/03/03 PHP
PHP获取文件夹内文件数的方法
2015/03/12 PHP
Javascript 入门基础学习
2010/03/10 Javascript
jquery如何实现在加载完iframe的内容后再进行操作
2013/09/10 Javascript
JSONP获取Twitter和Facebook文章数的具体步骤
2014/02/24 Javascript
javascript实现超炫的向上滑行菜单实例
2015/08/03 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
AngularJS入门教程之 XMLHttpRequest实例讲解
2016/07/27 Javascript
jQuery Raty 一款不错的星级评分插件
2016/08/24 Javascript
响应式表格之固定表头的简单实现
2016/08/26 Javascript
Bootstrap表格使用方法详解
2017/02/17 Javascript
详解webpack提取第三方库的正确姿势
2017/12/22 Javascript
详解Javascript中new()到底做了些什么?
2018/03/29 Javascript
jQuery基于随机数解决中午吃什么去哪吃问题示例
2018/12/29 jQuery
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
vue 返回上一页,页面样式错乱的解决
2019/11/14 Javascript
微信小程序实现购物车功能
2020/11/18 Javascript
[43:35]EG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python工程师面试必备25条知识点
2018/01/17 Python
TensorFlow深度学习之卷积神经网络CNN
2018/03/09 Python
python多维数组切片方法
2018/04/13 Python
python得到windows自启动列表的方法
2018/10/14 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
2020/01/03 Python
python和php哪个容易学
2020/06/19 Python
Expedia意大利旅游网站:酒店、机票和租车预订
2017/10/30 全球购物
Desigual德国官网:在线购买原创服装
2018/03/27 全球购物
美国便宜的横幅和标志印刷在线:Best of Signs
2019/05/29 全球购物
Piercing Pagoda官网:耳环、戒指、项链、手链等
2020/09/28 全球购物
自动化工程专业个人应聘自荐信
2013/09/26 职场文书
应聘美工求职信
2013/11/07 职场文书
设备动力科岗位职责范本
2014/02/23 职场文书
培训班开班仪式主持词
2014/03/28 职场文书
股份合作协议书范本
2014/04/14 职场文书
学习社交礼仪心得体会
2016/01/22 职场文书
教你使用Jenkins集成Harbor自动发布镜像
2022/04/03 Servers