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 相关文章推荐
第十一节--重载
Nov 16 PHP
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
Jul 29 PHP
解析php中两种缩放图片的函数,为图片添加水印
Jun 14 PHP
解析在apache里面给php写虚拟目录的详细方法
Jun 24 PHP
php实现cc攻击防御和防止快速刷新页面示例
Feb 13 PHP
PHP URL参数获取方式的四种例子
Feb 28 PHP
初识laravel5
Mar 02 PHP
ucenter中词语过滤原理分析
Jul 13 PHP
php如何执行非缓冲查询API
Jul 22 PHP
浅谈PHP实现大流量下抢购方案
Dec 15 PHP
PHP实现的日历功能示例
Sep 01 PHP
Laravel validate error处理,ajax,json示例
Oct 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基于MySQLI函数封装的数据库连接工具类【定义与用法】
2017/08/11 PHP
PHP简单实现记录网站访问量功能示例
2018/06/06 PHP
PHP序列化和反序列化深度剖析实例讲解
2020/12/29 PHP
javascript 弹出层组件(升级版)
2011/05/12 Javascript
ajax异步刷新实现更新数据库
2012/12/03 Javascript
js交换排序 冒泡排序算法(Javascript版)
2014/10/04 Javascript
jQuery通过扩展实现抖动效果的方法
2015/03/11 Javascript
jQuery3.0中的buildFragment私有函数详解
2016/08/16 Javascript
浅谈JavaScript中promise的使用
2017/01/11 Javascript
javascript 面向对象function详解及实例代码
2017/02/28 Javascript
Bootstrap超大屏幕的实现代码
2017/03/22 Javascript
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
mescroll.js上拉加载下拉刷新组件使用详解
2017/11/13 Javascript
Vue Router去掉url中默认的锚点#
2018/08/01 Javascript
[02:04]2020年夜魇暗潮预告片
2020/10/30 DOTA
python网络编程学习笔记(10):webpy框架
2014/06/09 Python
详解Python3中字符串中的数字提取方法
2017/01/14 Python
python读出当前时间精度到秒的代码
2019/07/05 Python
Djang的model创建的字段和参数详解
2019/07/27 Python
Python中的 sort 和 sorted的用法与区别
2019/08/10 Python
python实现图片上添加图片
2019/11/26 Python
使用Python获取当前工作目录和执行命令的位置
2020/03/09 Python
如何在VSCode下使用Jupyter的教程详解
2020/07/13 Python
Python 绘制可视化折线图
2020/07/22 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
2020/09/03 Python
提高python代码运行效率的一些建议
2020/09/29 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
2021/01/24 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
湖南省召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
市场部岗位职责
2015/02/12 职场文书
导游词之大雁塔景区
2019/09/17 职场文书
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python
Python利器openpyxl之操作excel表格
2021/04/17 Python
详解Redis基本命令与使用场景
2021/06/01 Redis
python获取字符串中的email
2022/03/31 Python
Nginx配置使用详解
2022/07/07 Servers