在PHP中有一个GD库,可以通过phpinfo()函数查看GD库有没有打开。
如果显示了,就代表GD库的函数都可以使用了。没有,则需要去配置文件里打开。
GD库是做什么用的?看上图中的函数大家应该猜出一二,强大的图片生成功能库。
PHP用GD库可以制作图片,可以编辑图片(为图片加水印),一个最常用的应用:大家都知道网站登录需要验证码吧!那个验证码就是一张图片。程序先随机出一个“码”,把“码”先存在一个地方(常存于session里),然后写到图片里让用户看。人的肉眼很容易看出图片里的“码”,如果是第三方的“机器”或程序就不好识别图片里的“码”。验证码的作用就是防机器不防人。
GD库的函数挺多,至于说哪些函数更常用更重要,楠神也不好说,因为我很少开发有用PHP做图片的功能,验证码功能大多直接用别人写好的。可看出GD库重要,但实际应用的不多。下面楠神就做些简单的示例吧,以后真的有做图片的需求,可以仔细研究下GD库各种函数的运用。
imagecreate — 新建一个基于调色板的图像
创建画布(新建),它的返回值是资源数据类型。对图片的操作都是先从创建画布开始,就像操作文件一样,先得打开文件。
画布可以新建也可以直接把一张图片当成画布:
有了画布就可以进一步操作它了,比如给画布填充颜色。
imagecolorallocate — 为一幅图像分配颜色
imagefill — 区域填充
上面两个函数可以给画布填颜色
imagepng — 以 PNG 格式将图像输出到浏览器或文件
imagegif — 输出图象到浏览器或文件
imagejpeg — 输出图象到浏览器或文件
这三个函数都可以输出图像,只是输出的图片文件类型不一样。图像输出有两种方式,一种可以在页面中输出图像,另一种可生成图像文件。
imagedestroy — 销毁一图像
打开一个资源,就得记着用完关闭掉。
演示第一种在页面中输出图像:直接输出,需要告知浏览器输出为图片信息(header("Content-type:image/png;"))
此时img1.php完全就是一个png图片文件。
特别注意的一点,直接在页面输出图像,千万不要有其他字符输出,不然图片会显示不出来。比如用记事本写过的代码,会产生bom头(隐形字符),它就会影响到图片的正常输出。
演示第二种生产图片文件:
会直接在服务器上生成一个PNG图片文件。
imagestring — 水平地画一行字符串
利用这个函数可以在画布里写字。