PHP实现绘制3D扇形统计图及图片缩放实例

时间:2022-11-06 19:21:49

1、利用php gd库的函数绘制3D扇形统计图

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
header("content-type","text/html;charset=utf-8");
/*扇形统计图*/
$image = imagecreatetruecolor(100, 100);  /*创建画布*/
 
/*设置画布需要的颜色*/
$white = imagecolorallocate($image,0xff,0xff,0xff);
$gray = imagecolorallocate($image, 0xc0, 0xc0, 0xc0);
$darkgray = imagecolorallocate($image, 0x90, 0x90, 0x90);
$navy = imagecolorallocate($image, 0x00, 0x00, 0x80);
$darknavy = imagecolorallocate($image, 0x00, 0x00, 0x50);
$red = imagecolorallocate($image, 0xff, 0x00, 0x00);
$darkred = imagecolorallocate($image, 0x90, 0x00, 0x00);
 
/*填充背景色*/
imagefill($image, 0, 0, $white);
 
/*3D制作*/
for($i = 60; $i > 50; $i--)
{
  imagefilledarc($image, 50, $i, 100, 50, -160, 40, $darknavy, IMG_ARC_PIE);
  imagefilledarc($image, 50, $i, 100, 50, 40, 75, $darkgray, IMG_ARC_PIE);
  imagefilledarc($image, 50, $i, 100, 50, 75, 200, $darkred, IMG_ARC_PIE);
}
/*画椭圆弧并填充*/
imagefilledarc($image, 50, 50, 100, 50, -160, 40, $darknavy, IMG_ARC_PIE);
imagefilledarc($image, 50, 50, 100, 50, 40, 75, $darkgray, IMG_ARC_PIE);
imagefilledarc($image, 50, 50, 100, 50, 75, 200, $darkred, IMG_ARC_PIE);
 
/*画字符串*/
imagestring($image, 3, 15, 55, "30%", $white);
imagestring($image, 3, 45, 35, "60%", $white);
imagestring($image, 3, 60, 60, "10%", $white);
 
/*输出图像*/
header("content-type:image/png");
imagepng($image);
 
/*释放资源*/
imagedestroy($image);
?>

效果:

PHP实现绘制3D扇形统计图及图片缩放实例

2、对图片进行缩放

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<div>
  <h4>原图大小</h4>
  <img src="1.png" style="border:1px solid red;">
</div>
<?php
header("content-type","text/html;charset=utf-8");
 
/*
*@param string $filename  图片的url
*@param int  $width   设置图片缩放的最大宽度
*@param int  $height   设置图片缩放的最大高度
*/
function thumb($filename,$width=130,$height=130)
{
  /*获取原图的大小*/
  list($width_orig,$height_orig) = getimagesize($filename);
 
  /*根据参数$width和$height,换算出等比例的高度和宽度*/
  if($width && ($width_orig < $height_orig))
  {
    $width = ($height / $height_orig) * $width_orig;
  }
  else
  {
    $height = ($width / $width_orig) * $height_orig;
  }
 
  /*以新的大小创建画布*/
  $image_p = imagecreatetruecolor($width, $height);
 
  /*获取图像资源*/
  $image = imagecreatefrompng($filename);
 
  /*使用imagecopyresampled缩放*/
  imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
 
  /*保存缩放后的图片和命名*/
  imagepng($image_p,'test.png');
 
  /*释放资源*/
  imagedestroy($image_p);
  imagedestroy($image);
}
/*调用函数*/
thumb('1.png');
?>
<div>
  <h4>缩放后的大小</h4>
  <img src="test.png" style="border:1px solid red;">
</div>

效果:

PHP实现绘制3D扇形统计图及图片缩放实例