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 Coding Tips(php小技巧)[2011/04/02最后更新]
May 02 PHP
php header Content-Type类型小结
Jul 03 PHP
php读取目录所有文件信息dir示例
Mar 18 PHP
php实现读取超大文件的方法
Jul 28 PHP
ThinkPHP添加更新标签的方法
Dec 05 PHP
PHP实现股票趋势图和柱形图
Feb 07 PHP
php获得文件大小和文件创建时间的方法
Mar 13 PHP
php生成年月日下载列表的方法
Apr 24 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
Nov 04 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
May 16 PHP
php微信公众号js-sdk开发应用
Nov 28 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
Aug 07 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 分页类 扩展代码
2009/06/11 PHP
PHP Global变量定义当前页面的全局变量实现探讨
2013/06/05 PHP
PHP页面实现定时跳转的方法
2014/10/31 PHP
php检测图片主要颜色的方法
2015/07/01 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
2017/06/05 PHP
js中的scroll和offset 使用比较的实例与分析
2013/09/29 Javascript
使用forever管理nodejs应用教程
2014/06/03 NodeJs
jquery判断浏览器后退时候弹出消息的方法
2014/08/11 Javascript
JavaScript中的定时器之Item23的合理使用
2015/10/30 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
AngularJS创建自定义指令的方法详解
2016/11/03 Javascript
JS实现的相册图片左右滚动完整实例
2016/11/23 Javascript
jquery的 filter()方法使用教程
2018/03/22 jQuery
微信公众号平台接口开发 菜单管理的实现
2019/08/14 Javascript
JS async 函数的含义和用法实例总结
2020/04/08 Javascript
Js和VUE实现跑马灯效果
2020/05/25 Javascript
[06:07]DOTA2-DPC中国联赛 正赛 Ehome vs VG 选手采访
2021/03/11 DOTA
Python获取远程文件大小的函数代码分享
2014/05/13 Python
Python中常用操作字符串的函数与方法总结
2016/02/04 Python
python解决汉字编码问题:Unicode Decode Error
2017/01/19 Python
python实现监控某个服务 服务崩溃即发送邮件报告
2018/06/21 Python
Python提取特定时间段内数据的方法实例
2019/04/01 Python
Python+selenium点击网页上指定坐标的实例
2019/07/05 Python
在python中修改.properties文件的操作
2020/04/08 Python
Scrapy模拟登录赶集网的实现代码
2020/07/07 Python
加拿大时尚潮流大码女装购物网站:Addition Elle
2018/04/02 全球购物
NHL官方在线商店:Shop.NHL.com
2020/05/01 全球购物
夜大自我鉴定
2013/10/31 职场文书
会计岗位职责模板
2014/03/12 职场文书
媒体宣传策划方案
2014/05/25 职场文书
党员个人对照检查材料
2014/10/01 职场文书
教育合作协议范本
2014/10/17 职场文书
退税申请报告怎么写
2015/05/18 职场文书
西部计划志愿者工作总结
2015/08/11 职场文书
利用Python网络爬虫爬取各大音乐评论的代码
2021/04/13 Python
Java时间工具类Date的常用处理方法
2022/05/25 Java/Android