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.MVC的模板标签系统(四)
Sep 05 PHP
PHP4 与 MySQL 数据库操作函数详解
Oct 09 PHP
PHP 网页过期时间的控制代码
Jun 29 PHP
深入PHP FTP类的详解
Jun 13 PHP
php不写闭合标签的好处
Mar 04 PHP
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
Aug 20 PHP
php制作动态随机验证码
Feb 12 PHP
PHP查询快递信息的方法
Mar 07 PHP
关于PHP中Session文件过多的问题及session文件保存位置
Mar 17 PHP
PHP中key和current,next的联合运用实例分析
Mar 29 PHP
PHP array_key_exists检查键名或索引是否存在于数组中的实现方法
Jun 13 PHP
PHP策略模式定义与用法示例
Jul 27 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中spl_autoload_register函数的用法总结
2013/11/07 PHP
php无限级评论嵌套实现代码
2018/04/18 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
2014/08/16 Javascript
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
2016/01/07 Javascript
jQuery实现查找链接文字替换属性的方法
2016/06/27 Javascript
javascript类型系统——undefined和null全面了解
2016/07/13 Javascript
jQuery Easyui DataGrid点击某个单元格即进入编辑状态焦点移开后保存数据
2016/08/15 Javascript
JS实现title标题栏文字不间断滚动显示效果
2016/09/07 Javascript
基于JavaScript实现下拉列表左右移动代码
2017/02/07 Javascript
JavaScript数据结构学习之数组、栈与队列
2017/05/02 Javascript
JS触摸与手势事件详解
2017/05/09 Javascript
浅谈redux, koa, express 中间件实现对比解析
2019/05/23 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
2020/01/16 Javascript
[07:01]DOTA2-DPC中国联赛正赛 Aster vs Magma 3月5日 赛后选手采访
2021/03/11 DOTA
Python 深入理解yield
2008/09/06 Python
python使用装饰器和线程限制函数执行时间的方法
2015/04/18 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
2018/06/13 Python
Python中关键字global和nonlocal的区别详解
2018/09/03 Python
在PyCharm中实现关闭一个死循环程序的方法
2018/11/29 Python
Python pygame绘制文字制作滚动文字过程解析
2019/12/12 Python
Django和Ueditor自定义存储上传文件的文件名
2021/02/25 Python
HTML5 canvas基本绘图之填充样式实现
2016/06/27 HTML / CSS
红色连衣裙精品店:Red Dress Boutique
2018/08/11 全球购物
儿科护士自我鉴定
2013/10/14 职场文书
学生励志演讲稿
2014/01/06 职场文书
英文演讲稿开场白
2014/08/25 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
安全教育片观后感
2015/06/17 职场文书
美容院管理规章制度
2015/08/05 职场文书
为什么 Nginx 比 Apache 更牛逼
2021/03/31 Servers
利用Pycharm连接服务器的全过程记录
2021/07/01 Python
什么是动态刷新率DRR? Windows11动态刷新率功能介绍
2021/11/21 数码科技
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python
一起来看看Vue的核心原理剖析
2022/03/24 Vue.js