Home > Backend Development > PHP Tutorial > FPGA implementation of digital signal processing to create cool PHP data pie chart effect implementation code

FPGA implementation of digital signal processing to create cool PHP data pie chart effect implementation code

WBOY
Release: 2016-07-29 08:47:20
Original
1229 people have browsed it

Rendering:
 打造超酷的PHP数据饼图效果实现代码
Source code:
[code]
//+------------------------+
//| pie3dfun.PHP//Public functions |
//+------------------------+
define("ANGLE_STEP", 5); //Definition The angle step when drawing an elliptical arc
function draw_getdarkcolor($img,$clr) //Find the dark color corresponding to $clr
{
$rgb = imagecolorsforindex($img,$clr);
return array($rgb["red "]/2,$rgb["green"]/2,$rgb["blue"]/2);
}
function draw_getexy($a, $b, $d) //Find the ellipse corresponding to angle $d Point coordinates on
{
$d = deg2rad($d);
return array(round($a*Cos($d)), round($b*Sin($d)));
}
function draw_arc ($img,$ox,$oy,$a,$b,$sd,$ed,$clr) //Elliptic arc function
{
$n = ceil(($ed-$sd)/ANGLE_STEP);
$d = $sd;
list($x0,$y0) = draw_getexy($a,$b,$d);
for($i=0; $i<$n; $i++)
{
$d = ($d+ANGLE_STEP)>$ed?$ed:($d+ANGLE_STEP);
list($x, $y) = draw_getexy($a, $b, $d);
imageline($img, $x0+$ox, $y0+$oy, $x+$ox, $y+$oy, $clr);
$x0 = $x;
$y0 = $y;
}
}
function draw_sector($img, $ ox, $oy, $a, $b, $sd, $ed, $clr) //Draw a fan
{
$n = ceil(($ed-$sd)/ANGLE_STEP);
$d = $sd;
list($x0,$y0) = draw_getexy($a, $b, $d);
imageline($img, $x0+$ox, $y0+$oy, $ox, $oy, $clr);
for ($i=0; $i<$n; $i++)
{
$d = ($d+ANGLE_STEP)>$ed?$ed:($d+ANGLE_STEP);
list($x, $y ) = draw_getexy($a, $b, $d);
imageline($img, $x0+$ox, $y0+$oy, $x+$ox, $y+$oy, $clr);
$x0 = $x ;
$y0 = $y;
}
imageline($img, $x0+$ox, $y0+$oy, $ox, $oy, $clr);
list($x, $y) = draw_getexy($a /2, $b/2, ($d+$sd)/2);
imagefill($img, $x+$ox, $y+$oy, $clr);
}
function draw_sector3d($img, $ox, $oy, $a, $b, $v, $sd, $ed, $clr) //3d sector
{
draw_sector($img, $ox, $oy, $a, $b, $sd, $ed , $clr);
if($sd<180)
{
list($R, $G, $B) = draw_getdarkcolor($img, $clr);
$clr=imagecolorallocate($img, $R, $ G, $B);
if($ed>180) $ed = 180;
list($sx, $sy) = draw_getexy($a,$b,$sd);
$sx += $ox;
$sy += $oy;
list($ex, $ey) = draw_getexy($a, $b, $ed);
$ex += $ox;
$ey += $oy;
imageline($img , $sx, $sy, $sx, $sy+$v, $clr);
imageline($img, $ex, $ey, $ex, $ey+$v, $clr);
draw_arc($img, $ ox, $oy+$v, $a, $b, $sd, $ed, $clr);
list($sx, $sy) = draw_getexy($a, $b, ($sd+$ed)/2) ;
$sy += $oy+$v/2;
$sx += $ox;
imagefill($img, $sx, $sy, $clr);
}
}
function draw_getindexcolor($img, $clr ) //RBG to index color
{
$R = ($clr>>16) & 0xff;
$G = ($clr>>8)& 0xff;
$B = ($clr) & 0xff;
return imagecolorallocate($img, $R, $G, $B);
}
// Draw the main function and output the picture
// $datLst is the data array, $datLst is the label array, $datLst is the color array
// The dimensions of the above three arrays should be equal
function draw_img($datLst,$labLst,$clrLst,$a=250,$b=120,$v=20,$f
{
$ox = 5+$ a;
$oy = 5+$b;
$fw = imagefontwidth($font);
$fh = imagefontheight($font);
$n = count($datLst);//Number of data items
$w = 10+$a*2;
$h = 10+$b*2+$v+($fh+2)*$n;
$img = imagecreate($w, $h);
//Convert RGB to Index color
for($i=0; $i<$n; $i++)
$clrLst[$i] = draw_getindexcolor($img,$clrLst[$i]);
$clrbk = imagecolorallocate($img, 0xff , 0xff, 0xff);
$clrt = imagecolorallocate($img, 0x00, 0x00, 0x00);
//Fill the background color
imagefill($img, 0, 0, $clrbk);
//Sum
$tot = 0;
for($i=0; $i<$n; $i++)
$tot += $datLst[$i];
$sd = 0;
$ed = 0; 333
$ly = 10 +$b*2+$v;
for($i=0; $i<$n; $i++)
{
$sd = $ed;
$ed += $datLst[$i]/$tot* 360;
//Draw a round cake
draw_sector3d($img, $ox, $oy, $a, $b, $v, $sd, $ed, $clrLst[$i]); //$sd,$ed ,$clrLst[$i]);
//Draw label
imagefilledrectangle($img, 5, $ly, 5+$fw, $ly+$fh, $clrLst[$i]);
imagerectangle($img, 5 , $ly, 5+$fw, $ly+$fh, $clrt);
//imagestring($img, $font, 5+2*$fw, $ly, $labLst[$i].":". $datLst[$i]."(".(round(10000*($datLst[$i]/$tot))/100)."%)", $clrt);
$str = iconv("GB2312" , "UTF-8", $labLst[$i]);
ImageTTFText($img, $font, 0, 5+2*$fw, $ly+13, $clrt, "./simsun.ttf", $ str.":".$datLst[$i]."(".(round(10000*($datLst[$i]/$tot))/100)."%)");
$ly += $ fh+2;
}
//Output graphics
header("Content-type: image/png");
//Output the generated image
$imgFileName = "../temp/".time().". png";
imagepng($img,$imgFileName);
echo ''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''
}
$datLst = array(30, 10, 20, 20, 10, 20, 10, 20); //Data
$labLst = array("University of Science and Technology of China", "Anhui University of Science and Technology", "Tsinghua University", " Peking University", "Nanjing University", "Shanghai University", "Hohai University", "Sun Yat-sen University"); //Tag
$clrLst = array(0x99ff00, 0xff6666, 0x0099ff, 0xff99ff, 0xffff99, 0x99ffff, 0xff3333, 0x009999 );
//Draw
draw_img($datLst,$labLst,$clrLst);
?>

The above introduces the fpga implementation of digital signal processing to create a cool PHP data pie chart effect implementation code, including the fpga implementation of digital signal processing. I hope it will be helpful to friends who are interested in PHP tutorials.

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template