在PHP中,可以使用GD2函数库,来绘制图像。这里,我们简单介绍采用GD2函数库绘制图像的基本步骤和函数,并使用其来绘制简单的验证码图像。
从PHP的4.3版本开始,PHP捆绑了自己版本的GD2库。在windows平台下,只要注册了php_gd2.dll扩展,PNG和JPEG是自动支持的。注册php_gd2.dll非常简单,只要在PHP安装目录(\ext子目录)找到该文件并复制到系统目录(如果使用Windows XP, 就是C:\Windows\system)。此外,还需要在php.ini文件中取消如下一行指令的注释:
;extension = php_gd2.dll
下面来介绍绘图步骤:
(1)首先获得一个图像资源,可以创建(或修改)一个图像。
$im = imagecreatetruecolor( &width, &height); //创建一个指定宽高的空白图像
或者,打开一个已有图像资源:
&im = imagecreatefrompng( ' baseimage.png'); //打开一个PNG图像资源
如果要打开JPEG或者GIF图像资源,则需要使用函数
$im = imagecreatefromjpeg('baseimage.jpeg');
$im = imagecreatefromgif('baseimage.gif');
(2)在图像上绘图或打印文本
首先,必须选择希望绘制的颜色。对每个PHP图像资源,都需要使用函数imgecolorallocate( )来选择颜色。
$color1 = imagecolorallocate($im, 255, 0, 0);
$color2 = imagecolorallocate($im, 0, 0, 255);
然后,在每一次绘制文本或者其它形状,都必须待上颜色参数。
imagestring( )函数来输绘制文本
bool imagestring(resource image, int font, int x, int y, string s, int color);
imageline( )函数绘制直线
bool imageline(resource image, int x, int y, int x2, int y2, int color);
imagefill( )函数来进行填充
bool imagefill(resource image, int x, int y, int color);
imagesetpixel( )函数来绘制单个点
book imagesetpixel(resource image, int x, int y, int color);
(3)输出最终图形
用二种方法:
1)将一个图像直接输出到浏览器或者一个文件
首先,需要使用Header( )函数来指定图像的MIME类型,告诉Web浏览器我们输出的是一个图像而不是文本或者HTML:
heaeder('Content-type: image/png');
然后,可以调用函数输出图像数据:
imagepng(&im); //或者imagejpeg,imagegif
如果输出到文件,则可以使用imagepng(&im, &filename);
2)如果是直接引用该图像,比如在<img>标签中,则不需要header( )语句。
(4)在图像保存或者显示完毕后,使用imagedestroy( )函数来释放内存资源。
bool imagedestroy(&im);