PHP中使用GD库创建圆形饼图的例子


Posted in PHP onNovember 19, 2014

在PHP中,有一些简单的图像函数是可以直接使用的,但大多数要处理的图像,都需要在编译PHP时加上GD库。除了安装GD库之外,在PHP中还可能需要其他的库,这可以根据需要支持哪些图像格式而定。GD库可以在http://www.boutell.com/gd/免费下载,不同的GD版本支持的图像格式不完全一样,最新的GD库版本支持GIF、JPEG、PNG、WBMP、XBM等格式的图像文件,此外还支持一些如FreeType、Type 1等字体库。通过GD库中的函数,可以完成各种点、线、几何图形、文本及颜色的操作处理,也可以创建或读取多种格式的图像文件。

在PHP中,通过GD库处理图像的操作都是先在内存中处理,操作完成以后再以文件流的方式输出到浏览器或保存在服务器的磁盘中。创建一个图像应该完成如下所示4个基本步骤。

①创建画布:所有的绘图设计都需要在一个背景图片上完成,而画布实际上就是在内存中开辟的一块临时区域,用于存储图像的信息。以后的图像操作都将基于这个背景画布,该画布的管理就类似于我们在画画时使用的画布。

②绘制图像:画布创建完成以后,就可以通过这个画布资源,使用各种画像函数设置图像的颜色、填充画布、画点、线段、各种几何图形,以及向图像中添加文本等。

③输出图像:完成整个图像的绘制以后,需要将图像以某种格式保存到服务器指定的文件中,或将图像直接输出到浏览器上显示给客户。但在图像输出之前,一定要使用header()函数发送Content-type通知浏览器,这次发送的是图片不是文本。

④释放资源:图像被输出以后,画布中的内容也不再有用。出于节约系统资源的考虑,需要及时清楚画布占用的所有内存资源。

我们先来了解一下一个非常简单的创建图像脚本。在下面的脚本文件image.php中,按前面介绍的绘制图像的四个步骤,使用GD库动态输出一个扇形统计图。代码如下所示:

<?php 

    //创建画布,返回一个资源类型的变量$image,并在内存中开辟一个临时区域

    $image = imagecreatetruecolor(100, 100);                //创建画布大小为100x100

 

    //设置图像中所需的颜色,相当于在画画时准备的染料盒

    $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--){                //循环10次画出立体效果

        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, $navy, IMG_ARC_PIE);      //画一椭圆弧且填充

    imagefilledarc($image, 50, 50, 100, 50, 40 , 75, $gray, IMG_ARC_PIE);      //画一椭圆弧且填充

    imagefilledarc($image, 50, 50, 100, 50, 75, 200, $red, IMG_ARC_PIE);      //画一椭圆弧且填充

 

    imagestring($image, 1, 15, 55, '34.7%', $white);                //水平地画一行字符串

    imagestring($image, 1, 45, 35, '55.5%', $white);                //水平地画一行字符串

 

    //向浏览器中输出一个GIF格式的图片

    header('Content-type:image/png');               //使用头函数告诉浏览器以图像方式处理以下输出

    imagepng($image);                       //向浏览器输出

    imagedestroy($image);                   //销毁图像释放资源

?>

直接通过浏览器请求该脚本,或是将该脚本所在的URL,赋给HTML中的IMG标记的src属性,都可以获取动态输出的图像结果,如下图所示:

PHP中使用GD库创建圆形饼图的例子

PHP 相关文章推荐
PHP的类 功能齐全的发送邮件类
Oct 09 PHP
php生成文件
Jan 15 PHP
PHP has encountered an Access Violation 错误的解决方法
Jan 17 PHP
php判断手机访问还是电脑访问示例分享
Jan 20 PHP
curl实现站外采集的方法和技巧
Jan 31 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
Jul 08 PHP
PHP利用APC模块实现大文件上传进度条的方法
Oct 29 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
May 28 PHP
如何修改yii2.0自带的user表为其它的表
Aug 01 PHP
php实现的AES加密类定义与用法示例
Jan 29 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
Apr 20 PHP
php intval函数用法总结
Apr 14 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
Nov 19 #PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
Nov 19 #PHP
PHP GD库生成图像的几个函数总结
Nov 19 #PHP
PHP中绘制图像的一些函数总结
Nov 19 #PHP
PHP中round()函数对浮点数进行四舍五入的方法
Nov 19 #PHP
PHP中创建图像并绘制文字的例子
Nov 19 #PHP
PHP图片处理之图片背景、画布操作
Nov 19 #PHP
You might like
PHP登陆后跳转到登陆前页面实现思路及代码
2014/01/17 PHP
php检测图片主要颜色的方法
2015/07/01 PHP
基于jquery的tab切换 js原理
2010/04/01 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
node.js中使用socket.io制作命名空间
2014/12/15 Javascript
JQuery radio(单选按钮)操作方法汇总
2015/04/15 Javascript
JavaScript计算某一天是星期几的方法
2015/08/05 Javascript
json+jQuery实现的无限级树形菜单效果代码
2015/08/27 Javascript
JS+Canvas绘制时钟效果
2020/08/20 Javascript
jQuery实现隔行变色的方法分析(对比原生JS)
2016/11/18 Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
2017/02/23 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
2017/03/06 Javascript
vue init失败简单解决方法(终极版)
2017/12/22 Javascript
在 Angular中 使用 Lodash 的方法
2018/02/11 Javascript
AngularJS下$http服务Post方法传递json参数的实例
2018/03/29 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
2018/12/09 Javascript
详解基于Wepy开发小程序插件(推荐)
2019/08/01 Javascript
JS实现躲避粒子小游戏
2020/06/18 Javascript
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
Python安装第三方库的3种方法
2015/06/21 Python
python list元素为tuple时的排序方法
2018/04/18 Python
深入浅析python 协程与go协程的区别
2019/05/09 Python
Django ModelForm组件使用方法详解
2019/07/23 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
2020/02/28 Python
Django数据库操作之save与update的使用
2020/04/01 Python
python实现数字炸弹游戏
2020/07/17 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
css3.0 图形构成实例练习二
2013/03/19 HTML / CSS
如何在Canvas中添加事件的方法示例
2019/05/21 HTML / CSS
廉价航班、机票和酒店:JustFly
2018/02/07 全球购物
瑞典度假品牌:OAS
2019/05/28 全球购物
澳洲网红粉泥面膜:Sand & Sky
2019/08/13 全球购物
党的群众路线教育实践活动总结大会主持词
2014/10/30 职场文书
催款律师函范文
2015/05/27 职场文书
详解TypeScript的基础类型
2022/02/18 Javascript
golang连接MySQl使用sqlx库
2022/04/14 Golang