码迷,mamicode.com
首页 > Web开发 > 详细

php关于gd库之1

时间:2015-08-21 11:10:36      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:

GD库,是php处理图形的扩展库。

php中处理图形和我们平常画画步骤类似:

1、创建画布------>准备画画的地方;

2、设置画笔------>选择画画的笔的颜色;

3、开始画画。

按每个步骤分开来说,创建画布,就是设置一块可以用来处理图形的区域,后面画的图形要确保在这个区域中,如果超出了设置的画布的区域,那画的东西就看不到了。

创建画布使用imagecreatetruecolor()来进行,它的具体格式如下:

//接收的参数是画布的宽和高,以像素pix表示,返回的是一个图像标识符
resource
imagecreatetruecolor ( int $width , int $height )

设置画笔则是选择画笔的颜色,使用imagecolorallocate()来进行设置:

//接收的参数第一个是图像标识符,后3个是RGB的色彩值
int imagecolorallocate ( resource $image , int $red , int $green , int $blue )

来试着画个对角线:

1 $img = imagecreatetruecolor(200,150);  //设置一个宽200pix,高150pix的画布
2 $red = imagecolorallocate($img,0xFF,0x00,0x00); //设置一支红色的画笔
3 imageline($img,0,0,200,150,$red); //画一条从(0,0)到(200,150)坐标的红色的线
4 header("content-type:image/png"); //image/png的类型
5 imagepng($img); //以png的格式输出
//imagepng($img,"myimg.png"); //将画出来的图像保存到myimg.png文件

来看看效果如何:

技术分享

就是这么个效果,在200*150的画布上画了一条红色的对角线。

——————————————————————————————————

这种简单的图形似乎没什么作用,那我们找个日常能用到的东西来测试一下,那就是“万恶的验证码”了。

验证码的原理就是在一块画布上呈现的一组随机数,不过为了防止机器识别等问题,需要将这块画布上的东西弄的凌乱一些。

以一个最简单的验证码图形来试试gd库的应用:

 1 <?php
 2 //设置画布和画笔
 3 $img = imagecreatetruecolor(45,25);
 4 $red = imagecolorallocate($img,0xFF,0x00,0x00);
 5 $white = imagecolorallocate($img,0xFF,0xFF,0xFF);
 6 $black = imagecolorallocate($img,0x00,0x00,0x00);
 7 imagefill($img,0,0,$black);
 8 //设置4位随机数
 9 $code = ‘‘;
10 for($i=0;$i<4;$i++){
11     $code .= rand(0,9);
12 }
13 imagestring($img,5,5,5,$code,$red);  //将生成的随机数放到画布上
14 for($i=0;$i<100;$i++){
15     imagesetpixel($img,rand(0,40),rand(0,25),$white);  //在画布上随机的画上100个像素点,形成噪点
16 }
17 
18 header("content-type:image/png");
19 imagepng($img);

上面的代码就是一个最简单的验证码图片的生成了,它生成的是一个黑色打底,4位随机红色数字的验证码图片,看一下效果:

技术分享

如果感觉干扰太多的话,可以将噪点改为50个,那样干扰的像素点就会少很多,图片上的验证码就是显得比较清楚了。

————————————————————————————————————————————

给图片加水印也是平日里经常能用到的功能,这个水印可以是图片,也可以是文字。

写个例子来试试效果:

 1 <?php
 2 //要添加水印的图片
 3 $img = imagecreatefromjpeg(‘./zjc3.jpg‘);
 4 $red = imagecolorallocate($img,0xFF,0x00,0x00);
 5 
 6 //要添加到图片上的图片,用的是前面生成后保存的验证码图片
 7 $logo = imagecreatefrompng(‘./myimg1.png‘);
 8 $size = getimagesize(‘myimg1.png‘);
 9 imagecopy($img,$logo,5,5,0,0,$size[0],$size[1]);
10 
11 //设置中文字体,如果不设置的话,添加中文水印会出现乱码
12 $font = "C:\Windows\Fonts\simsun.ttc";
13 $size2 = getimagesize(‘zjc3.jpg‘);
14 
15 //添加到图片上的中文为“王的女人”
16 imagettftext($img,30,0,$size2[0]-160,$size2[1]-20,$red,$font,"王的女人");
17 
18 header("content-type:image/jpeg");
19 imagejpeg($img);

来看一下效果:

技术分享

php关于gd库之1

标签:

原文地址:http://www.cnblogs.com/liangjl/p/4747002.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!