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

 更新时间:2014年10月01日 15:09:55   投稿:junjie  
这篇文章主要介绍了PHP实现绘制3D扇形统计图及图片缩放实例,本文给出代码示例,代码中包含一些说明注释,需要的朋友可以参考下

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

  <?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);
  ?>

效果:

2、对图片进行缩放

  <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>

效果:

相关文章

  • CentOS 6.3下安装PHP xcache扩展模块笔记

    CentOS 6.3下安装PHP xcache扩展模块笔记

    这篇文章主要介绍了CentOS 6.3下安装PHP xcache扩展模块笔记,本文包含xchache的编译安装、配置、测试等内容,需要的朋友可以参考下
    2014-09-09
  • php加密算法之实现可逆加密算法和解密分享

    php加密算法之实现可逆加密算法和解密分享

    对于大部分密码加密,我们可以采用md5、sha1等方法。可以有效防止数据泄露,但是这些方法仅适用于无需还原的数据加密。对于需要还原的信息,则需要采用可逆的加密解密算法,下面一组PHP函数是实现此加密解密的方法
    2014-01-01
  • Yii2简单实现多语言配置的方法

    Yii2简单实现多语言配置的方法

    这篇文章主要介绍了Yii2简单实现多语言配置的方法,涉及Yii配置文件的设置及语言包的操作方法,需要的朋友可以参考下
    2016-07-07
  • php 可变函数使用小结

    php 可变函数使用小结

    PHP 支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。本文重点给大家介绍php 可变函数使用小结,感兴趣的朋友一起看看吧
    2018-06-06
  • PHP实现基于文本的摩斯电码生成器

    PHP实现基于文本的摩斯电码生成器

    这篇文章主要介绍了PHP实现基于文本的摩斯电码生成器的相关资料,需要的朋友可以参考下
    2016-01-01
  • Thinkphp5框架中引入Markdown编辑器操作示例

    Thinkphp5框架中引入Markdown编辑器操作示例

    这篇文章主要介绍了Thinkphp5框架中引入Markdown编辑器操作,结合实例形式分析了Thinkphp5引入Markdown编辑器的具体步骤与相关操作技巧,需要的朋友可以参考下
    2020-06-06
  • php使用递归计算文件夹大小

    php使用递归计算文件夹大小

    这篇文章主要介绍了php使用递归计算文件夹大小,代码很简洁使用,这里推荐给大家。
    2014-12-12
  • php批量把数组中的日期时间转为时间戳的实现

    php批量把数组中的日期时间转为时间戳的实现

    本文介绍了php批量把数组中的日期时间转为时间戳的实现,主要使用strtotime()函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03
  • PHP树-不需要递归的实现方法

    PHP树-不需要递归的实现方法

    下面小编就为大家带来一篇PHP树-不需要递归的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • codeigniter集成ucenter1.6双向通信的解决办法

    codeigniter集成ucenter1.6双向通信的解决办法

    用codeigniter开发一个子网站,之后想和原来的论坛进行同步,包括同步登陆和双向通信。这篇文章主要介绍了codeigniter集成ucenter1.6双向通信的解决办法,需要的朋友可以参考下
    2014-06-06

最新评论