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 相关文章推荐
ajax缓存问题解决途径
Dec 06 PHP
初步介绍PHP扩展开发经验分享
Sep 06 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
Jun 03 PHP
PHP中常用的转义函数
Feb 28 PHP
ThinkPHP调用百度翻译类实现在线翻译
Jun 26 PHP
php获取访问者IP地址汇总
Apr 24 PHP
thinkPHP内置字符串截取函数用法详解
Nov 15 PHP
yii2实现分页,带搜索的分页功能示例
Jan 07 PHP
PHP实现的多维数组排序算法分析
Feb 10 PHP
使用PHP访问RabbitMQ消息队列的方法示例
Jun 06 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
Jan 10 PHP
layui数据表格自定义每页条数limit设置
Oct 26 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 IP及IP段进行访问限制的代码
2008/12/17 PHP
php使用百度翻译api示例分享
2014/01/31 PHP
两千行代码的PHP学习笔记汇总
2014/10/05 PHP
php验证session无效的解决方法
2014/11/04 PHP
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
php修改上传图片尺寸的方法
2015/04/14 PHP
PHP导入导出Excel代码
2015/07/07 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
2016/09/22 PHP
PHP后台实现微信小程序登录
2018/08/03 PHP
用于自动添加Digg This!按钮的JavaScript
2006/12/23 Javascript
JavaScript Event学习第二章 Event浏览器兼容性
2010/02/07 Javascript
Javascript根据指定下标或对象删除数组元素
2012/12/21 Javascript
javascript使用正则控制input输入框允许输入的值方法大全
2014/06/19 Javascript
详解Bootstrap创建表单的三种格式(一)
2016/01/04 Javascript
详解如何让Express支持async/await
2017/10/09 Javascript
详解基于node.js的脚手架工具开发经历
2019/01/28 Javascript
vue缓存的keepalive页面刷新数据的方法
2019/04/23 Javascript
微信小程序绘制图片发送朋友圈
2019/07/25 Javascript
JS实现单张或多张图片持续无缝滚动的示例代码
2020/05/10 Javascript
python益智游戏计算汉诺塔问题示例
2014/03/05 Python
Python中的变量和作用域详解
2016/07/13 Python
Python文件和流(实例讲解)
2017/09/12 Python
python接口自动化(十六)--参数关联接口后传(详解)
2019/04/16 Python
将python运行结果保存至本地文件中的示例讲解
2019/07/11 Python
CSS3实现滚动条动画效果代码分享
2016/08/03 HTML / CSS
CSS3 新增选择器的实例
2019/11/13 HTML / CSS
工作疏忽检讨书
2014/01/25 职场文书
工商管理专业自荐信
2014/06/03 职场文书
幼儿园社区活动总结
2014/07/07 职场文书
2014年节能降耗工作总结
2014/12/11 职场文书
地震慰问信
2015/02/14 职场文书
岗位聘任报告
2015/03/02 职场文书
党风廉正建设个人工作总结
2015/03/06 职场文书
亮剑观后感300字
2015/06/05 职场文书
一文帮你理解PReact10.5.13源码
2021/04/03 Javascript
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python