在php中,有一些简单的图像函数是可以直接使用的,但大多数要处理函数,都需要在编译php时加上gd库。除了安装gd库之外,在php中还可能需要其他的库,这可以根据需要支持哪些图像格式而定。不同的gd版本支持的图像格式不完全一样,最新的gd库版本支持gif、jpeg、png、wbmp、xbm等格式的图像文件,此外还支持一些如freetype、type 1 等字体库。通过gd库中的 函数可以完成各种点、线、几何图形、文本及颜色的操作和处理,也可以创建或读取多种格式的图像文件。
在php中,通过db库处理的操作,都是先在内存中处理,操作完成以后再以文件流的方式,输出到浏览器或保存在服务器的磁盘中。创建一个图像应该完成如下所示的4个基本步骤。
(1) 创建画布:所有的绘图设计都需要一个背景图片上完成,而画布实际上就是在内存中开辟的一块临时区域。用于存储图像的信息。以后的图像操作都将基于这个背景画布,该画布的管理就类似于我们在画画时使用的画布。
(2)绘制图像:画布创建完成以后,就可以通过这个画布资源,使用各种画像函数设置图像的颜色、填充画布、画点、线段、各种几何图形,以及向图像中添加文本等。
(3)输出图像:完成整个图像的绘制以后,需要将图像以某种个数保存到服务器指定的文件中,或将图像直接输出到浏览器上显示给用户。但在图像输出之前,一定要使用header()函数发送content-type通知浏览器,这次发送的是图片不是文本。
(4)释放资源:图像被输出以后,画布中的内容也不再有用。出于节约系统资源的考虑,需要及时清除画布占用的所有内存资源。
画布管理
使用php的gd库处理图像时,必须对画布进行管理。创建画布就是在内存中开辟一块存储区域,以后在php中对图像的所有操作都是基于这个画布处理的,画布就是一个图像资源。在php中,可以使用imagecreate()和imagecreatetruecolor()两个函数创建指定的画布。这两个函数的作用是一致的,都是建立一个指定大小的画布,他们的原型如下所示:


resource imagecreate(int $x_size,int $y_size) //新建一个基于调色板的图像
resource imagecreatetruecolor(int $x_size,int $y_size) //新建一个真彩色图像

虽然这两个函数都是可以创建一个新的画布,但各自能容纳颜色的总数是不同的,imagecreate()函数可以创建一个基于普通调色板的图像,通常支持256色。而imagecreatetruecolor()函数可以创建一个真彩色图像,但该函数不能用于gif文件格式。当画布创建后,返回一个图像标识符,代表了一幅宽度为$x_size和高度$y_size的空白图像引用句柄。在后续的绘图过程中,都需要使用这个资源类型的句柄。例如,可以通过调用imagex()和imagey()两个函数获取图像大小。代码如下所示


     $img = imagecreatetruecolor(300,200);  //创建一个300*200的画布

echo imagese($img);                                    //输出画布宽度300

echo imagesy($img)                                    //输出画布高度200


另外,画布的引用句柄如果不再使用,一定要将这个资源销毁,释放内存与该图像的存储单元。画布的销毁过程非常简单,调用imagedestroy()函数可以实现。其语法格式如下所示

bool imagedestroy(resource $image) //销毁图像

如果该方法调用成功,就会释放与参数$image 关联内存。其中参数$image是由图像创建函数返回的图像标识