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 相关文章推荐
理解PHP5中static和const关键字的区别
Mar 19 PHP
解决PHP超大文件下载,断点续传下载的方法详解
Jun 06 PHP
ThinkPHP3.1.3版本新特性概述
Jun 19 PHP
PHP实现的浏览器检查类
Apr 11 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
May 29 PHP
详解Yii2 之 生成 URL 的方法
Jun 16 PHP
详解PHP如何更好的利用PHPstorm的自动提示
Aug 18 PHP
php如何利用pecl安装mongodb扩展详解
Jan 09 PHP
PHP基于GD2函数库实现验证码功能示例
Jan 27 PHP
Laravel框架创建路由的方法详解
Sep 04 PHP
浅谈laravel数据库查询返回的数据形式
Oct 21 PHP
微信小程序结合ThinkPHP5授权登陆后获取手机号
Nov 23 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 按指定元素值去除数组元素的实现方法
2011/11/04 PHP
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
2013/05/08 PHP
基于PHP中的常用函数回顾
2013/07/11 PHP
CodeIgniter表单验证方法实例详解
2016/03/03 PHP
PHP+MariaDB数据库操作基本技巧备忘总结
2018/05/21 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
Extjs Ajax 乱码问题解决方案
2009/04/15 Javascript
通过jquery的$.getJSON做一个跨域ajax请求试验
2011/05/03 Javascript
jQuery隔行变色与普通JS写法的对比
2013/04/21 Javascript
浅析Cookie中的Path与domain
2013/12/18 Javascript
jquery datatable后台封装数据示例代码
2014/08/07 Javascript
JavaScript DOM基础
2015/04/13 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
javascript轻量级库createjs使用Easel实现拖拽效果
2016/02/19 Javascript
代码详解javascript模块加载器
2018/03/04 Javascript
详解iframe跨域的几种常用方法(小结)
2019/04/29 Javascript
JavaScript实现轮播图效果代码实例
2019/09/28 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
2020/02/07 Javascript
python中pass语句用法实例分析
2015/04/30 Python
Python 两个列表的差集、并集和交集实现代码
2016/09/21 Python
详解Python多线程
2016/11/14 Python
基于python中pygame模块的Linux下安装过程(详解)
2017/11/09 Python
微信跳一跳python自动代码解读1.0
2018/01/12 Python
Python3字符串encode与decode的讲解
2019/04/02 Python
解析pip安装第三方库但PyCharm中却无法识别的问题及PyCharm安装第三方库的方法教程
2020/03/10 Python
美国最受欢迎的度假租赁网站:VRBO
2016/08/02 全球购物
华润集团网上药店:健一网
2016/09/19 全球购物
工程师求职简历的自我评价分享
2013/10/10 职场文书
生产部主管岗位职责
2014/01/06 职场文书
银行竞聘演讲稿
2014/05/16 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
婚宴领导致辞
2015/07/28 职场文书
判断Python中的Nonetype类型
2021/05/25 Python
动画电影《擅长捉弄人的高木同学》6月10日上映!
2022/03/20 日漫
Vue组件化(ref,props, mixin,.插件)详解
2022/05/15 Vue.js
CentOS7安装MySQL8的超级详细教程(无坑!)
2022/06/10 Servers