PHP中绘制图像的一些函数总结


Posted in PHP onNovember 19, 2014

在PHP中绘制图像的函数非常丰富,包括点、线、各种几何图形等可以想象出来的平面图形,都可以通过PHP中提供的各种画图函数完成。我们在这里介绍一些常用的图像绘制,如果使用我们没有介绍过的函数,可以参考手册实现。另外,这些图形绘制函数都需要使用画布资源,并在画布中的位置通过坐标(原点是在画布左上角的起始位置,以像素为单位,沿着X轴正方向向右延伸,Y轴正方向向下延伸)决定,并且还可以通过函数的最后一个参数,设置每个图形的颜色。画布中的坐标系统如图所示。

PHP中绘制图像的一些函数总结

一、函数图形区域填充imageFill()

通过PHP仅仅绘制出只有边线的几何图形是不够的,还可以使用对应的填充函数,完成图形区域的填充。除了每个图形都有对应的填充函数之外,还可以使用imageFill()函数实现区域填充。该函数的语法格式如下:

bool imagefill(resource $image,int $x ,int $y,int $color)                    //区域填充

该函数在参数$image代表的图像上,相对于图像左上角(0,0)坐标处,从坐标($x,$y)处用参数$color指定的颜色执行区域填充。与坐标($x,$y)点颜色相同且相邻的点都会被填充。例如在下面的示例中,将画布的背景设置为红色。代码如下所示:
<?php 

$im = imagecreatetruecolor(100, 100); //创建100*100大小的画布

$red = imagecolorallocate($im, 255, 0, 0); //设置一个颜色变量为红色

 

imagefill($im, 0, 0, $red); //将背景设为红色

 

header('Content-type:image/png'); //通知浏览器这不是文本而是一个图片

imagepng($im); //生成PNG格式的图片输出给浏览器

 

imagedestroy($im); //销毁图像资源,释放画布占用的内存空间

?>

二、绘制点和线imageSetPixel()、imageline()

画点和线是绘制图像中最基本的操作,如果灵活使用,可以通过它们绘制出千变万化的图像。在PHP中,使用imageSetPixel()函数在画布中绘制一个单一像素的点,并且可以设置点的颜色。其函数的原型如下所示:

bool imagesetpixel(resource $image,int $x,int $y,int $color)                         //画一个单一像素

该函数在第一个参数$image中提供的画布上,距离圆点分别为$x和$y的坐标位置,绘制一个颜色为$color的一个像素点。理论上使用画点函数便可以画出所需要的所有图形,也可以使用其他的绘图函数。如果需要绘制一条线段,可以使用imageline()函数,其语法格式如下所示:
bool imageline(resource $image,int $x1,int $y1,int $x2,int $y2,int $color)                //画一条线段

我们都知道两点确定一条线段,所以该函数使用$color颜色在图像$image中,从坐标($x1,$y1)开始到($x2,$y2)坐标结束画一条线段。

三、绘制矩形imageRectangle()、imageFilledRectangle()

可以使用imageRectangle()函数绘制矩形,也可以通过imageFilledRectangle()函数绘制一个矩形并填充。这两个函数的语法格式如下所示:

bool imagerectangle(resource $image,int $x1 , int $y1,int $x2,int $y2,int $color)                    //画一个矩形

bool imagefilledrectangle(resource image,int $x1 ,int $y1 ,int $x2 ,int $y2,int $color)                      //画一个矩形并填充

这两个函数的行为类似,都是在$image图像中画一个矩形,只不过前者是使用$color参数指定矩形的边线颜色,而后者则是使用这个颜色填充矩形。相对于图像左上角的(0,0)位置,矩形的左上角坐标为($x1,$y1),右下角坐标为($x2,$y2)。

四、绘制多边形imagePolygon()、imagefilledpolygon()

可以使用imagePolygon()函数绘制一个多边形,也可以通过imageFilledPolygon()函数绘制一个多边形并填充。这两个函数的语法格式如下:

bool imagepolygon(resource $image,array $points,int $num_points,int $color)                   //画一个多边形

bool imagefilledpolygon(resource $image ,array $points,int $num_points,int $color)                     //画一个多边形并填充

这两个函数的行为类似,都是在$image图像中画一个多边形,只不过前者是使用$color参数指定多边形的边线颜色,而后者则是使用这个颜色填充多边形。第二个参数$points是一个PHP数组,包含了多边形的各个顶点坐标。即points[0]=x0,points[1]=y0,points[2]=x1,points[3]=y1,依此类推。第三个参数$num_points是顶点的总数,必须大于3.

五、绘制椭圆imageEllipse()、imageFilledElipse()

可以使用imageEllipse()函数绘制一个椭圆,也可以通过imageFilledEllipse()函数绘制一个椭圆并填充。这两个函数的语法格式如下:

bool imageellipse(resource $image,int $cx,int $cy,int $w,int $h,int $color)              //画一个椭圆

bool imagefilledellipse(resource $image,int $cx,int $cy,int $w,int $h,int $color)               //画一个椭圆填充

这两个函数行为类似,都是在$image图像中画一个椭圆,只不过前者是使用$color参数指定椭圆形的边线颜色,而后者则是使用它填充颜色。相对于画布左上角坐标(0,0),以($cx,$cy)坐标为中心画一个椭圆,参数$w和$h分别指定了椭圆的宽和高。如果成功则返回TRUE,失败则返回FALSE。

六、绘制弧线imageArc()

前面介绍的3D扇形统计图示例,就是使用绘制填充圆弧的函数实现的。可以使用imageArc()函数绘制一条弧线,以及圆形和椭圆形。这个函数的语法格式如下:

bool imagearc(resource $image ,int $cx,int $cy,int $w,int $h,int $s,int $e ,int $color) //画椭圆弧

相对于画布左上角坐标(0,0),该函数以($cx,$cy)坐标为中心,在$image所代表的图像中画一个椭圆弧。其中参数$w和$h分别指定了椭圆的宽度和高度,起始点和结束点以$s和$e参数以角度指定。0º位于三点钟位置,以顺时针方向绘画。如果要绘制一个完整的圆形,首先要将参数$w和$h设置为相等的值,然后将起始角度$s设置为0,结束角度$e指定为360.如果需要绘制填充圆弧,可以查询imageFilledArc()函数使用。
PHP 相关文章推荐
用PHP连接Oracle for NT 远程数据库
Oct 09 PHP
打造计数器DIY三步曲(下)
Oct 09 PHP
html中select语句读取mysql表中内容
Oct 09 PHP
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
May 17 PHP
解析百度搜索结果link?url=参数分析 (全)
Oct 09 PHP
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
Jan 19 PHP
PHP不用第三变量交换2个变量的值的解决方法
Jun 02 PHP
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
Sep 30 PHP
php获取一个变量的名字的方法
Sep 05 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
Sep 29 PHP
PHP文件与目录操作示例
Dec 24 PHP
PHP实现活动人选抽奖功能
Apr 19 PHP
PHP中round()函数对浮点数进行四舍五入的方法
Nov 19 #PHP
PHP中创建图像并绘制文字的例子
Nov 19 #PHP
PHP图片处理之图片背景、画布操作
Nov 19 #PHP
php使用function_exists判断函数可用的方法
Nov 19 #PHP
PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
Nov 19 #PHP
PHP判断一个gif图片是否为动态图片的方法
Nov 19 #PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
Nov 19 #PHP
You might like
一个PHP缓存类代码(附详细说明)
2011/06/09 PHP
用PHP提取中英文词语以及数字的首字母的方法介绍
2013/04/23 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
2016/03/23 PHP
PHP仿微信发红包领红包效果
2016/10/30 PHP
PHP如何根据文件头检测文件类型实例代码
2018/10/14 PHP
基于jquery的分页控件(C#)
2011/01/06 Javascript
仿猪八戒网左下角的文字滚动效果
2011/10/28 Javascript
js如何获取file控件的完整路径具体实现代码
2013/05/15 Javascript
JavaScript中的acos()方法使用详解
2015/06/14 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
2016/09/24 Javascript
jQuery动态操作表单示例【基于table表格】
2018/12/06 jQuery
vue模块拖拽实现示例代码
2019/03/09 Javascript
vue 点击展开显示更多(点击收起部分隐藏)
2019/04/09 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
vue 解决在微信内置浏览器中调用支付宝支付的情况
2020/11/09 Javascript
[49:21]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第二场 11.05
2020/11/06 DOTA
Python调用C语言开发的共享库方法实例
2015/03/18 Python
在DigitalOcean的服务器上部署flaskblog应用
2015/12/19 Python
Python爬虫包BeautifulSoup简介与安装(一)
2018/06/17 Python
python实现linux下抓包并存库功能
2018/07/18 Python
基于python 微信小程序之获取已存在模板消息列表
2019/08/05 Python
后端开发使用pycharm的技巧(推荐)
2020/03/27 Python
CSS3 渐变(Gradients)之CSS3 径向渐变
2016/07/08 HTML / CSS
浅谈html5 响应式布局
2014/12/24 HTML / CSS
BISSELL官网:北美吸尘器第一品牌
2019/03/14 全球购物
博柏利美国官方网站:Burberry美国
2020/11/19 全球购物
周鸿祎:教你写创业计划书
2013/12/30 职场文书
乡下人家教学反思
2014/02/01 职场文书
低碳环保倡议书
2014/04/14 职场文书
大专学生求职自荐信
2014/07/06 职场文书
二年级学生期末评语
2014/12/26 职场文书
学习保证书
2015/01/17 职场文书
小学五年级班主任工作经验交流材料
2015/11/02 职场文书
导游词之安徽巢湖
2019/12/26 职场文书
详解MySQL集群搭建
2021/05/26 MySQL