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 str_pad 函数用法简介
Jul 11 PHP
php 提速工具eAccelerator 配置参数详解
May 16 PHP
PHP spl_autoload_register实现自动加载研究
Dec 06 PHP
解析PHP跨站刷票的实现代码
Jun 18 PHP
PHP小教程之实现链表
Jun 09 PHP
php防止sql注入之过滤分页参数实例
Nov 03 PHP
php中in_array函数用法分析
Nov 15 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
Mar 18 PHP
ThinkPHP3.2.1图片验证码实现方法
Aug 19 PHP
thinkphp自带验证码全面解析
Sep 18 PHP
php对接java现实加签验签的实例
Nov 25 PHP
PHP简单实现二维数组赋值与遍历功能示例
Oct 19 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
浅析HTTP消息头网页缓存控制以及header常用指令介绍
2013/06/28 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
php cli模式下获取参数的方法
2017/05/05 PHP
firefo xml 读写实现js代码
2009/06/11 Javascript
Google Map API更新实现用户自定义标注坐标
2009/07/29 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
2013/04/26 Javascript
ECMAScript6中Map/WeakMap详解
2015/06/12 Javascript
基于JavaScript实现树形下拉框
2016/08/10 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
2017/04/13 Javascript
JS实现搜索关键词的智能提示功能
2017/07/07 Javascript
JS模拟实现哈希表及应用详解
2018/05/04 Javascript
Vue分页器实现原理详解
2019/06/28 Javascript
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
node.js使用http模块创建服务器和客户端完整示例
2020/02/10 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
浅谈javascript如何获取文件后缀名
2020/08/07 Javascript
微信小游戏中three.js离屏画布的示例代码
2020/10/12 Javascript
python实现爬虫下载漫画示例
2014/02/16 Python
Python中用Spark模块的使用教程
2015/04/13 Python
Python实现导出数据生成excel报表的方法示例
2017/07/12 Python
python多进程实现进程间通信实例
2017/11/24 Python
Django数据库表反向生成实例解析
2018/02/06 Python
Laravel+Dingo/Api 自定义响应的实现
2019/02/17 Python
python利用递归方法实现求集合的幂集
2020/09/07 Python
Window10上Tensorflow的安装(CPU和GPU版本)
2020/12/15 Python
用JAVA实现一种排序,JAVA类实现序列化的方法(二种)
2014/04/23 面试题
外贸业务员求职自荐信分享
2013/09/21 职场文书
放飞中国梦演讲稿
2014/04/23 职场文书
项目投资合作意向书
2014/07/29 职场文书
学校运动会简讯
2015/07/20 职场文书
幼儿园教学反思范文
2016/03/02 职场文书
离婚协议书范文2016
2016/03/18 职场文书
幽默导游词应该怎么写?
2019/08/26 职场文书
导游词之晋城蟒河
2019/12/12 职场文书
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python
uniapp开发打包多端应用完整方法指南
2022/12/24 Javascript