php图形操作
GD指的是Graphic Device,PHP的GD库是用来处理图形的扩展库,通过GD库提供的一系列API,可以对图像进行处理或者直接生成新的图片。
PHP除了能进行文本处理以外,通过GD库,可以对JPG、PNG、GIF、SWF等图片进行处理。GD库常用在图片加水印,验证码生成等方面。
PHP默认已经集成了GD库,只需要在安装的时候开启就行。
1 2 3 4 5 6
| header("content-type: image/png"); $img=imagecreatetruecolor(100, 100); $red=imagecolorallocate($img, 0xFF, 0x00, 0x00); imagefill($img, 0, 0, $red); imagepng($img); imagedestroy($img);
|
绘制线条
要对图形进行操作,首先要新建一个画布,通过imagecreatetruecolor函数可以创建一个真彩色的空白图片:
1
| $img = imagecreatetruecolor(100, 100);
|
GD库中对于画笔所用的颜色,需要通过imagecolorallocate函数进行分配,通过参数设定RGB的颜色值来确定画笔的颜色:
1
| $red = imagecolorallocate($img, 0xFF, 0x00, 0x00);
|
然后我们通过调用绘制线段函数imageline进行线条的绘制,通过指定起点跟终点来最终得到线条。
1
| imageline($img, 0, 0, 100, 100, $red);
|
线条绘制好以后,通过header与imagepng进行图像的输出。
1 2
| header("content-type: image/png"); imagepng($img);
|
最后可以调用imagedestroy释放该图片占用的内存。
通过上面的步骤,可以发现PHP绘制图形非常的简单,但很多时候我们不只是需要输出图片,可能我们还需要得到一个图片文件,可以通过imagepng函数指定文件名将绘制后的图像保存到文件中。
1
| imagepng($img, 'img.png');
|
生成图像验证码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <?php $img = imagecreatetruecolor(100, 40); $black = imagecolorallocate($img, 0x00, 0x00, 0x00); $green = imagecolorallocate($img, 0x00, 0xFF, 0x00); $white = imagecolorallocate($img, 0xFF, 0xFF, 0xFF); imagefill($img,0,0,$white);
$code = ''; for($i = 0; $i < 4; $i++) { $code .= rand(0, 9); } imagestring($img, 5, 10, 10, $code, $black);
for($i=0;$i<50;$i++) { imagesetpixel($img, rand(0, 100) , rand(0, 100) , $black); imagesetpixel($img, rand(0, 100) , rand(0, 100) , $green); }
header("content-type: image/png"); imagepng($img); imagedestroy($img); ?>
|