在PHP中绘制图像的函数非常丰富,包括点、线、各种几何图形等可以想象出来的平面图形,都可以通过PHP中提供的各种画图函数完成。我们在这里介绍一些常用的图像绘制,如果使用我们没有介绍过的函数,可以参考手册实现。另外,这些图形绘制函数都需要使用画布资源,并在画布中的位置通过坐标(原点是在画布左上角的起始位置,以像素为单位,沿着X轴正方向向右延伸,Y轴正方向向下延伸)决定,并且还可以通过函数的最后一个参数,设置每个图形的颜色。画布中的坐标系统如图所示。
一、函数图形区域填充imageFill()
通过PHP仅仅绘制出只有边线的几何图形是不够的,还可以使用对应的填充函数,完成图形区域的填充。除了每个图形都有对应的填充函数之外,还可以使用imageFill()函数实现区域填充。该函数的语法格式如下:
bool imagefill(resource $image,int $x ,int $y,int $color) //区域填充
<?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) //画一个单一像素
bool imageline(resource $image,int $x1,int $y1,int $x2,int $y2,int $color) //画一条线段
三、绘制矩形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) //画一个矩形并填充
四、绘制多边形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) //画一个多边形并填充
五、绘制椭圆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) //画一个椭圆填充
六、绘制弧线imageArc()
前面介绍的3D扇形统计图示例,就是使用绘制填充圆弧的函数实现的。可以使用imageArc()函数绘制一条弧线,以及圆形和椭圆形。这个函数的语法格式如下:
bool imagearc(resource $image ,int $cx,int $cy,int $w,int $h,int $s,int $e ,int $color) //画椭圆弧