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中Session的概念
Oct 09 PHP
一段防盗连的PHP代码
Dec 06 PHP
PHP Array交叉表实现代码
Aug 05 PHP
PHP爆绝对路径方法收集整理
Sep 17 PHP
基于php冒泡排序算法的深入理解
Jun 09 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
Apr 24 PHP
php实现发送微信模板消息的方法
Mar 07 PHP
php身份证号码检查类实例
Jun 18 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
Nov 05 PHP
php 时间time与日期date之间的使用详解及区别
Nov 07 PHP
PHP如何通过表单直接提交大文件详解
Jan 08 PHP
php7 错误处理机制修改实例分析
May 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
DC四月将推出百页特刊漫画 纪念小丑诞生80周年
2020/04/09 欧美动漫
PHP中通过加号合并数组的一个简单方法分享
2011/01/27 PHP
php学习笔记 类的声明与对象实例化
2011/06/13 PHP
PHP获取一年有几周以及每周开始日期和结束日期
2015/08/06 PHP
jQuery 浮动广告实现代码
2008/12/25 Javascript
javascript tips提示框组件实现代码
2010/11/19 Javascript
JavaScript模板入门介绍
2012/09/26 Javascript
JavaScript中window、doucment、body的解释
2013/08/14 Javascript
js中indexof的用法详细解析
2013/12/24 Javascript
JavaScrip常见的一些算法总结
2015/12/28 Javascript
Window.Open打开窗体和if嵌套代码
2016/04/15 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
2016/10/10 Javascript
Vue.js表单控件实践
2016/10/27 Javascript
详解ECharts使用心得总结
2016/12/06 Javascript
jQuery获取选中单选按钮radio的值
2016/12/27 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
2017/01/09 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
在vue 中使用 less的教程详解
2018/09/26 Javascript
详解JavaScript的变量
2019/04/04 Javascript
JavaScript实现随机点名器实例详解
2019/05/07 Javascript
JavaScript RegExp 对象用法详解
2019/09/24 Javascript
微信小程序 多行文本显示...+显示更多按钮和收起更多按钮功能
2019/09/26 Javascript
[02:40]DOTA2英雄基础教程 先知
2013/11/29 DOTA
[47:35]VP vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
在Mac下使用python实现简单的目录树展示方法
2018/11/01 Python
对json字符串与python字符串的不同之处详解
2018/12/19 Python
python3 pillow模块实现简单验证码
2019/10/31 Python
解决python中的幂函数、指数函数问题
2019/11/25 Python
基于CSS3实现的黑色个性导航菜单效果
2015/09/14 HTML / CSS
HTML5 manifest离线缓存的示例代码
2018/08/08 HTML / CSS
日本一家专门经营各种箱包的大型网站:Traveler Store
2016/08/03 全球购物
英国的潮牌鞋履服饰商店:size?
2019/03/26 全球购物
办公室主任竞聘演讲稿
2014/05/15 职场文书
公安学专业求职信
2014/07/27 职场文书
期末个人总结范文
2015/02/13 职场文书
opencv检测动态物体的实现
2021/07/21 Python