2013-12-27 17:34:51

PHP绘图基础

我们在做PHP程序开发的时候,经常需要对图形图像进行处理,比如说创建验证码图片,缩放图片,压缩图片等。PHP为我们提供了丰富的图形图像处理函数。

在PHP中,绘制图像需要经过以下几个步骤:

1.创建画布

2.设置背景颜色和画笔颜色。

3.绘制图像(如文字、椭圆,直线等)

4.输出图片

5.销毁资源

一、使用imagecreate()函数创建图像

imagecreate()函数会新建一个基于调色板的图像,该函数的返回值是资源类型,代表了一副具有指定宽高的空白图像。

imagecolorallocate()函数为为一副图像分配颜色,可以是背景颜色也可以是画笔颜色。

(有一点需要注意的是:第一次对 imagecolorallocate() 的调用会给基于调色板的图像填充背景色,即用 imagecreate() 建立的图像)

imagecolordeallocate()取消图像颜色的分配,也就是先前由imagecolorallocate()函数分配的颜色。

imagedestory()销毁图像,释放由imagecreate()函数创建的资源占用的内存。

下面是一个简单的绘制图像的例子:

$height=300;
    $width=300;
    //创建图像资源
    $im=imagecreate($height,$width);
    //设置背景色
    $bgColor=imagecolorallocate($im, 255, 0, 0);
    //设置画笔颜色
    $penColor=imagecolorallocate($im, 0, 0, 255);
    //绘制文字和一条直线
    imagestring($im, 2, 150, 150, "hello world", $penColor);
    imageline($im, 20, 20, 260, 260, $penColor);
    //输出图片到浏览器
    header("Content-Type:image/png");
    imagepng($im);
    //销毁资源,释放内存
    imagecolordeallocate($im,$bgColor);
    imagecolordeallocate($im,$penColor);
    imagedestroy($im);

二、使用imagecreatetruecolor()函数创建图像

imagecreatetruecolor()和imagecreate()函数的作用基本相同,不同的是imagecreatetruecolor()函数创建的是一个真彩色图像,默认的背景颜色是黑色。在使用此函数时有以下几点需要注意:

1.如果需要改变该函数创建图像的背景色,需要使用imagefill()函数,不同于imagecreate()函数使用的imagecolorallocate().

2.该函数不能用于gif图片

下面是一个简单的绘制图像的代码:

$height=300;
    $width=300;
    //创建图像资源
    $im=imagecreatetruecolor($height,$width);
    //设置背景色
    $bgColor=imagecolorallocate($im, 255, 0, 0);
    //设置画笔颜色
    $penColor=imagecolorallocate($im, 0, 255, 0);
    //使用背景填充图像背景
    imagefill($im, 0, 0, $bgColor);
    //绘制文字和一条直线
    imagestring($im, 2, 150, 150, "hello world", $penColor);
    imageline($im, 20, 20, 260, 260, $penColor);
    //输出图片到浏览器
    header("Content-Type:image/png");
    imagepng($im);
    //销毁资源,释放内存
    imagecolordeallocate($im,$bgColor);
    imagecolordeallocate($im,$penColor);
    imagedestroy($im);
发表回复