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 相关文章推荐
smarty实例教程
Nov 19 PHP
PHP 上传文件大小限制
Jul 05 PHP
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
Jun 29 PHP
yii操作cookie实例简介
Jul 09 PHP
php版本的cron定时任务执行器使用实例
Aug 19 PHP
php中二维数组排序问题方法详解
Aug 28 PHP
Symfony2学习笔记之系统路由详解
Mar 17 PHP
Joomla简单判断用户是否登录的方法
May 04 PHP
yum命令安装php7和相关扩展
Jul 04 PHP
Yii2框架数据库简单的增删改查语法小结
Aug 31 PHP
Linux平台PHP5.4设置FPM线程数量的方法
Nov 09 PHP
ecshop添加菜单及权限分配问题
Nov 21 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 字符串操作入门教程
2006/12/06 PHP
10条PHP编程习惯助你找工作
2008/09/29 PHP
php 随机数的产生、页面跳转、件读写、文件重命名、switch语句
2009/08/07 PHP
php数组函数序列之array_unique() - 去除数组中重复的元素值
2011/10/29 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
2015/11/04 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
php多进程中的阻塞与非阻塞操作实例分析
2020/03/04 PHP
tbody元素支持嵌套的注意方法
2007/03/24 Javascript
javascript multibox 全选
2009/03/22 Javascript
Javascript学习笔记6 prototype的提出
2010/01/11 Javascript
Jquey拖拽控件Draggable使用方法(asp.net环境)
2010/09/28 Javascript
javascript textarea光标定位方法(兼容IE和FF)
2011/03/12 Javascript
jQuery1.6 使用方法一
2011/11/23 Javascript
jQuery中:only-child选择器用法实例
2015/01/03 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
简单介绍JavaScript的变量和数据类型
2015/06/03 Javascript
.NET微信公众号开发之创建自定义菜单
2015/07/16 Javascript
前端js弹出框组件使用方法
2020/08/24 Javascript
javascript 中模板方法单例的实现方法
2017/10/17 Javascript
webpack 单独打包指定JS文件的方法
2018/02/22 Javascript
对vue中v-if的常见使用方法详解
2018/09/28 Javascript
使用jQuery实现购物车
2020/10/29 jQuery
python使用多线程不断刷新网页的方法
2015/03/31 Python
numpy使用技巧之数组过滤实例代码
2018/02/03 Python
Python简单生成随机数的方法示例
2018/03/31 Python
Pyqt5实现英文学习词典
2019/06/24 Python
Python openpyxl读取单元格字体颜色过程解析
2019/09/03 Python
python生成器用法实例详解
2019/11/22 Python
python如何提升爬虫效率
2020/09/27 Python
英国最受信任的在线眼镜商之一:Fashion Eyewear
2019/10/31 全球购物
成人高等教育毕业生自我鉴定
2013/10/22 职场文书
校本课程教学计划
2015/01/19 职场文书
中国世界遗产导游词
2015/02/13 职场文书
刑事上诉状(无罪)
2015/05/23 职场文书
班级班风口号大全
2015/12/25 职场文书
JavaScript实现一键复制内容剪贴板
2022/07/23 Javascript