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 递归效率分析
Nov 24 PHP
一步一步学习PHP(3) php 函数
Feb 15 PHP
PHP项目开发中最常用的自定义函数整理
Dec 02 PHP
深入探讨<br />和 \r\n两者有什么区别??
Jun 05 PHP
浅析使用Turck-mmcache编译来加速、优化PHP代码
Jun 20 PHP
使用Sphinx对索引进行搜索
Jun 25 PHP
php生成图形(Libchart)实例
Nov 06 PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
Jun 19 PHP
2个Codeigniter文件批量上传控制器写法例子
Jul 25 PHP
MyEclipse常用配置图文教程
Sep 11 PHP
php单例模式示例分享
Feb 12 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
Apr 30 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
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
运用jquery实现table单双行不同显示并能单行选中
2009/07/25 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
javascript学习笔记之函数定义
2015/06/25 Javascript
js实现选中页面文字将其分享到新浪微博
2015/11/05 Javascript
深入浅析jQuery对象$.html
2016/08/22 Javascript
基于twbsPagination.js分页插件使用心得(分享)
2017/10/21 Javascript
Vue项目组件化工程开发实践方案
2018/01/09 Javascript
如何在Angular应用中创建包含组件方法示例
2019/03/23 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
2019/05/14 Javascript
layui 解决富文本框form表单提交为空的问题
2019/10/26 Javascript
js点击事件的执行过程实例分析【冒泡与捕获】
2020/04/11 Javascript
JavaScript 空间坐标的使用
2020/08/19 Javascript
JavaScript实现网页下拉菜单效果
2020/11/20 Javascript
[00:08]DOTA2勇士令状等级奖励“天外飞星”
2019/05/24 DOTA
Python操作Mysql实例代码教程在线版(查询手册)
2013/02/18 Python
Python输出带颜色的字符串实例
2017/10/10 Python
Pandas分组与排序的实现
2019/07/23 Python
Win10系统下安装labelme及json文件批量转化方法
2019/07/30 Python
Django中使用haystack+whoosh实现搜索功能
2019/10/08 Python
Python数据可视化:箱线图多种库画法
2019/11/06 Python
Python 多线程共享变量的实现示例
2020/04/17 Python
基于python实现删除指定文件类型
2020/07/21 Python
html5中如何将图片的绝对路径转换成文件对象
2018/01/11 HTML / CSS
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
FitFlop澳大利亚官网:英国符合人体工学的鞋类品牌
2017/06/05 全球购物
试解释COMMIT操作和ROLLBACK操作的语义
2014/07/25 面试题
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
农场厂长岗位职责
2013/12/28 职场文书
战略合作协议书范本
2014/04/18 职场文书
结婚纪念日感言
2015/08/01 职场文书
公司客户答谢酒会祝酒词
2015/08/11 职场文书
幼儿教师师德培训心得体会
2016/01/09 职场文书
MySQL数据库压缩版本安装与配置详细教程
2021/05/21 MySQL
java基础——多线程
2021/07/03 Java/Android