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


Posted in PHP onOctober 01, 2014

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

效果:

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

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>

效果:

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

PHP 相关文章推荐
php预定义常量
Dec 25 PHP
PHP 获取MSN好友列表的代码(2009-05-14测试通过)
Sep 09 PHP
那些年一起学习的PHP(二)
Mar 21 PHP
php魔术方法与魔术变量、内置方法与内置变量的深入分析
Jun 03 PHP
PHP连接MySQL查询结果中文显示乱码解决方法
Oct 25 PHP
php格式化时间戳显示友好的时间实现思路及代码
Oct 23 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
Apr 08 PHP
PHP使用NuSOAP调用Web服务的方法
Jul 18 PHP
学习php设计模式 php实现备忘录模式(Memento)
Dec 09 PHP
PHP实现二维数组根据key进行排序的方法
Dec 30 PHP
php微信公众号开发之关键词回复
Oct 20 PHP
使用laravel的migrate创建数据表的方法
Sep 30 PHP
PHP的switch判断语句的“高级”用法详解
Oct 01 #PHP
php中文字符串截取方法实例总结
Sep 30 #PHP
php出现web系统多域名登录失败的解决方法
Sep 30 #PHP
php中运用http调用的GET和POST方法示例
Sep 29 #PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
Sep 29 #PHP
PHP中echo,print_r与var_dump区别分析
Sep 29 #PHP
PHP5.3安装Zend Guard Loader图文教程
Sep 29 #PHP
You might like
PHP 文章中的远程图片采集到本地的代码
2009/07/30 PHP
php面向对象中的魔术方法中文说明
2014/03/04 PHP
PHP的mysqli_ssl_set()函数讲解
2019/01/23 PHP
JavaScript 设计模式 安全沙箱模式
2010/09/24 Javascript
javascript中的继承实例代码
2011/04/27 Javascript
简单实例处理url特殊符号&amp;处理(2种方法)
2013/04/02 Javascript
jQuery实现点击标题输入详细信息
2013/04/16 Javascript
获取offsetTop和offsetLeft值的js代码(兼容)
2013/04/16 Javascript
location.href用法总结(最主要的)
2013/12/27 Javascript
$(&quot;&quot;).click与onclick的区别示例介绍
2014/09/25 Javascript
js生成随机数的方法实例
2015/10/16 Javascript
javascript实现拖放效果
2015/12/16 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
angular.js指令中的controller、compile与link函数的不同之处
2017/05/10 Javascript
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
在Mac下彻底卸载node和npm的方法
2018/05/16 Javascript
js根据json数据中的某一个属性来给数据分组的方法
2018/10/08 Javascript
原生js实现的观察者和订阅者模式简单示例
2020/04/18 Javascript
Sublime Text3 配置 NodeJs 环境的方法
2020/05/20 NodeJs
javascript实现前端分页效果
2020/06/24 Javascript
[57:22]完美世界DOTA2联赛PWL S2 FTD vs PXG 第二场 11.27
2020/12/01 DOTA
PyTorch读取Cifar数据集并显示图片的实例讲解
2018/07/27 Python
python用win32gui遍历窗口并设置窗口位置的方法
2019/07/26 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
2019/08/06 Python
详解Python3迁移接口变化采坑记
2019/10/11 Python
Python优秀开源项目Rich源码解析的流程分析
2020/07/06 Python
Python面向对象特殊属性及方法解析
2020/09/16 Python
国外平面设计第一市场:99designs
2016/10/25 全球购物
高中数学教师求职信
2013/10/30 职场文书
市场营销专业个人求职信范文
2013/12/14 职场文书
银行领导证婚词
2014/01/11 职场文书
社区国庆节活动方案
2014/02/05 职场文书
保护环境倡议书500字
2014/05/19 职场文书
中秋晚会致辞
2015/07/31 职场文书
redis 限制内存使用大小的实现
2021/05/08 Redis
Linux中如何安装并部署Redis
2022/04/18 Servers