山那边是海 发表于 2015-2-4 00:25:57

PHP网页编程之php做饼图的函数(转)

小试一下身手,大概是没问题了,那么交给你个任务,做个留言本吧,这和HELLO WORLD有一比啊!^_^,同是新手面临的第一道关。饼图|函数   php做饼图的函数
作者:qdlover   宣布日期:2000年9月15日   浏览次数:14
--------------------------------------------------------------------------------

再引见一下我本人,呵呵
我是个老手,事先学php地道是为了敷衍向导哦,让咱们做统计图,我原本是学asp的,俄然转业很不顺应,不外php功效切实其实很壮大呀,呵呵,我都离不了他了,这不,饼图,柱型图都弄定了,可是还有良多成绩我不会,还但愿人人多指教呀,说了很多多少空话了,我还觉得是在写信那
我的接洽体例是:
               email:qingdaohb@yeah.net
               http://qdlover.yeah.net
老板催了,没举措,饼图函数出炉了,人人快抢呀

########
bimage.php3
########
<?
/*
函数申明
$chartdata:数据,是数组元素
$chartfont:字号
$chartdiameter:决意饼的巨细(要看你饿不饿了,呵呵)
$chartlabel:题目,也是数组元素
$colorslice:色彩数组,例如$tmp=array255,255,255);$colorslic=array($tmp);
$colorborder:边框色彩,数组
$colortext :文本色彩,数组
$colorbody:后台色彩,数组
$file:输入图片文件名*/
function bimage($chartdata,
                $chartfont,
                $chartdiameter ,
                $chartlabel ,
                $colorslice,
                $colorbody ,
                $colorborder,
                $colortext ,
                $file
                )
{
$chartdiameter=150;

   $chartfontheight=imagefontheight($chartfont);
   $d1=10;$d2=20;$d3=30;$d4=40;$d5=50;
   $chartdata=array($d1,$d2,$d3,$d4,$d5);
   $chartlabel=array("D1","D2","D3","D4","D5");
   $chartwidth=$chartdiameter+20;
   $chartheight=$chartdiameter+20+(($chartfontheight+2)*count($chartdata));
   header("content-type:image/gif");
   $image=imagecreate($chartwidth,$chartheight);
$colorbody =imagecolorallocate ($image,$colorbody,$colorbody,$colorbody);
$colortext =imagecolorallocate ($image,$colortext,$colortext,$colortext);
$colorborder =imagecolorallocate ($image,$colorborder,$colorborder,$colorborder);
for ($i=0;$i<count($colorslice);$i++)
{
$t=imagecolorallocate($image,$colorslice[$i],$colorslice[$i],$colorslice[$i]);
$colorslice[$i]=$t;
}




   for($i=0;$i<count($chartdata);$i++)
   {
   $charttotal+=$chartdata[$i];
   }
   $chartcenterx=$chartdiameter/2+10;
   $chartcentery=$chartdiameter/2+10;
    $degrees=0;
    for($i=0;$i<count($chartdata);$i++)
    {
    $startdegrees=round($degrees);
    $degrees+=(($chartdata[$i]/$charttotal)*360);
    $enddegrees=round($degrees);
    $currentcolor=$colorslice[$i%(count($colorslice))];
    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);
   }
   imagearc($image,
            $chartcenterx,
            $chartcentery,
            $chartdiameter,
            $chartdiameter,
            0,360,
            $colorborder);
   imagefilltoborder ($image,
                        floor($chartcenterx +( $chartdiameter /2)+2),
                        $chartcentery ,
                        $colorborder,
                        $colorborder );
      for ($i=0;$i<count($chartdata);$i++)
      {
      $currentcolor=$colorslice[$i%(count($colorslice))];
      $liney=$chartdiameter+20+($i*($chartfontheight+2));
      imagerectangle ($image,
                      10,
                      $liney,
                      20+$chartfontheight,
                      $liney+$chartfontheight,
                      $colorbody);
      imagefilltoborder($image,
                     12,
                     $liney+2,
                     $colorbody,
                     $currentcolor);
      imagestring($image,
                  $chartfont,
                  40+$chartfontheight,
                  $liney,
                  "$chartlabel[$i]:$chartdata[$i]",
                  $colortext);

      }


         imagegif ($image,$file);

}

function radians($degrees)
   {
   return($degrees*(pi()/180.0));
   }
function circle_point($degrees,$diameter)
   {
   $x=cos(radians($degrees))*($diameter/2);
   $y=sin(radians($degrees))*($diameter/2);
   return (array($x,$y));
   }
            ?>
###########
这是一个挪用的例子
###########

<?
include("bfunc.php3");
$chartdiameter=250;
   $chartfont=5;
   $d1=10;$d2=20;$d3=30;$d4=40;$d5=50;
   $chartdata=array($d1,$d2,$d3,$d4,$d5);
   $chartlabel=array("D1","D2","D3","D4","D5");

   $colorbody=array(0xff,0xff,0xff);
   $colorborder=array(0x00,0x00,0x00);
   $colortext=array(0xff,0xff,0xff);

   $color1=array(0xff,0x00,0x00);
   $color2=array(0x00,0xff,0x00);
   $color3=array(0x00,0x00,0xff);
   $color4=array(0xff,0xff,0x00);
   $color5=array(0xff,0x00,0xff);
   $colorslice=array($color1 ,$color2,$color3,$color4,$color5);
$file="tj.gif"
bimage($chartdata,
       $chartfont,
       $chartdiameter ,
       $chartlabel ,
       $colorslice,
       $colorbody ,
       $colorborder,
       $colortext ,
       $file       )
?>


【奥索网版权一切,如需转载,请注明出处】   
既然选择了PHP,就要坚持学下去!大家有没有问自己为什么会选择学习PHP呢?就我个人而言,完全是因为兴趣,因为我的专业和计算机完全无关,但是就是对编程很赶兴趣,尤其对网络编程、web开发特别赶兴趣。

小魔女 发表于 2015-2-4 13:06:59

这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。

蒙在股里 发表于 2015-2-8 07:00:34

多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。

活着的死人 发表于 2015-2-9 06:00:17

在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。

若相依 发表于 2015-2-9 23:40:01

php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)

兰色精灵 发表于 2015-2-28 07:32:30

php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。

海妖 发表于 2015-3-9 21:37:04

建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。

乐观 发表于 2015-3-17 01:13:22

,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。

愤怒的大鸟 发表于 2015-3-22 16:54:24

没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。

只想知道 发表于 2015-3-26 07:30:22

学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。

仓酷云 发表于 2015-3-28 01:32:21

再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。

精灵巫婆 发表于 2015-4-9 07:52:41

小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。

再见西城 发表于 2015-4-16 02:11:05

首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。

若天明 发表于 2015-4-20 21:42:35

装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。

分手快乐 发表于 2015-4-26 23:14:59

首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。

不帅 发表于 2015-5-2 01:29:37

曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ;

爱飞 发表于 2015-5-6 23:16:16

基础有没有对学习php没有太大区别,关键是兴趣。

飘飘悠悠 发表于 2015-6-28 01:15:32

说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年具体的记不清啦,囧。

冷月葬花魂 发表于 2015-6-29 16:28:14

首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。

灵魂腐蚀 发表于 2015-7-4 16:40:11

兴趣是最好的老师,百度是最好的词典。
页: [1] 2
查看完整版本: PHP网页编程之php做饼图的函数(转)