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 UBB 解析实现代码
Nov 27 PHP
PHP数组循环操作详细介绍 附实例代码
Feb 03 PHP
php使用百度天气接口示例
Apr 22 PHP
让codeigniter与swfupload整合的最佳解决方案
Jun 12 PHP
destoon实现资讯信息前面调用它所属分类的方法
Jul 15 PHP
PHP获取某个月最大天数(最后一天)的方法
Jul 29 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
Jan 07 PHP
PHP递归遍历指定文件夹内的文件实现方法
Nov 15 PHP
php.ini中date.timezone设置详解
Nov 20 PHP
Yii2下session跨域名共存的解决方案
Feb 04 PHP
php自定义排序uasort函数示例【二维数组按指定键值排序】
Jun 19 PHP
详解PHP服务器如何在有限的资源里最大提升并发能力
May 25 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 接口类与抽象类的实际作用
2009/11/26 PHP
php中防止伪造跨站请求的小招式
2011/09/02 PHP
php mysql 判断update之后是否更新了的方法
2012/01/10 PHP
5种PHP创建数组的实例代码分享
2014/01/17 PHP
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
thinkPHP中配置的读取与C方法详解
2016/12/05 PHP
聊聊 PHP 8 新特性 Attributes
2020/08/19 PHP
js判断屏幕分辨率的代码
2013/07/16 Javascript
JavaScript中判断两个字符串是否相等的方法
2015/07/07 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
又拍云 Node.js 实现文件上传、删除功能
2018/10/28 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
解决Vue打包上线之后部分CSS不生效的问题
2019/11/12 Javascript
JS数组扁平化、去重、排序操作实例详解
2020/02/24 Javascript
详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)
2020/07/11 Javascript
vue中echarts引入中国地图的案例
2020/07/28 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
js实现抽奖功能
2020/11/24 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
[01:15:36]加油刀塔第二期网络版
2014/08/09 DOTA
python3抓取中文网页的方法
2015/07/28 Python
Python实现Youku视频批量下载功能
2017/03/14 Python
Python中常用信号signal类型实例
2018/01/25 Python
Python爬豆瓣电影实例
2018/02/23 Python
python中多层嵌套列表的拆分方法
2018/07/02 Python
Python 分享10个PyCharm技巧
2019/07/13 Python
Python numpy多维数组实现原理详解
2020/03/10 Python
Python 调用 ES、Solr、Phoenix的示例代码
2020/11/23 Python
html5基础标签(html5视频标签 html5新标签用法)
2013/12/30 HTML / CSS
橄榄树药房:OLIVEDA
2019/09/01 全球购物
大学生入党群众意见书
2015/06/02 职场文书
2019年特色火锅店的创业计划书模板
2019/08/28 职场文书
如何使用JavaScript策略模式校验表单
2021/04/29 Javascript
MySQL中日期型单行函数代码详解
2021/06/21 MySQL
用Python编写简单的gRPC服务的详细过程
2021/07/04 Python
使用MybatisPlus打印sql语句
2022/04/22 SQL Server