PHP - GD库
来源:互联网 发布:大工软件学院 编辑:程序博客网 时间:2024/05/22 01:36
简介
GD库,是php处理图形的扩展库。
php中处理图形和我们平常画画步骤类似:
1、创建画布——>准备画画的地方;
2、设置画笔——>选择画画的笔的颜色;
3、开始画画。
按每个步骤分开来说,创建画布,就是设置一块可以用来处理图形的区域,后面画的图形要确保在这个区域中,如果超出了设置的画布的区域,那画的东西就看不到了。
创建画布使用imagecreatetruecolor()来进行,它的具体格式如下:
resource imagecreatetruecolor ( int $width , int $height )
它接收的参数是画布的宽和高,以像素pix表示,返回的是一个图像标识符。
设置画笔则是选择画笔的颜色,使用imagecolorallocate()来进行设置:
int imagecolorallocate ( resource $image , int $red , int $green , int $blue )
它接收的参数第一个是图像标识符,后3个是RGB的色彩值。
现在就可以进行操作(画画)了,用一个简单的对角线来尝试一下:
$img = imagecreatetruecolor(200,150); //设置一个宽200pix,高150pix的画布$red = imagecolorallocate($img,0xFF,0x00,0x00); //设置一支红色的画笔imageline($img,0,0,200,150,$red); //画一条从(0,0)到(200,150)坐标的红色的线header("content-type:image/png"); //image/png的类型imagepng($img); //以png的格式输出//imagepng($img,"myimg.png"); //将画出来的图像保存到myimg.png文件
验证码
刚刚画的对角线在实际中并没有什么应用,单纯为熟悉一下GD库的使用,现在用个日常经常能遇到的东西来练习一下,没错那就是“验证码”!
验证码的基本原理就是在一块画布上呈现的一组随机数,不过为了防止机器识别等问题,需要将这块画布上的东西弄的凌乱一些(加些噪点)。
来尝试画一个最简单的验证码:
<?php//设置画布和画笔$img = imagecreatetruecolor(45,25);$red = imagecolorallocate($img,0xFF,0x00,0x00);$white = imagecolorallocate($img,0xFF,0xFF,0xFF);$black = imagecolorallocate($img,0x00,0x00,0x00);imagefill($img,0,0,$black);$code = rand(1000,9999);imagestring($img,5,5,5,$code,$red); //将生成的随机数放到画布上for($i=0;$i<100;$i++){ imagesetpixel($img,rand(0,40),rand(0,25),$white); //在画布上随机的画上100个像素点,形成噪点}header("content-type:image/png");imagepng($img);
上面的代码会生成一个黑色底,4位随机红色数字的验证码图片。
调整噪点的数量会明显的影响验证码图片的清晰程度。
图片水印
给图片加水印也是平日里经常能用到的功能,这个水印可以是图片,也可以是文字。
例如:
<?php//要添加水印的图片$img = imagecreatefromjpeg('./zjc3.jpg');$red = imagecolorallocate($img,0xFF,0x00,0x00);//要添加到图片上的图片,用的是前面生成后保存的验证码图片$logo = imagecreatefrompng('./myimg1.png');$size = getimagesize('myimg1.png');imagecopy($img,$logo,5,5,0,0,$size[0],$size[1]);//设置中文字体,如果不设置的话,添加中文水印会出现乱码$font = "C:\Windows\Fonts\simsun.ttc";$size2 = getimagesize('zjc3.jpg');//添加到图片上的中文为“王的女人”imagettftext($img,30,0,$size2[0]-160,$size2[1]-20,$red,$font,"王的女人");header("content-type:image/jpeg");imagejpeg($img);
0 0
- php安装GD库
- php配置GD库
- php安装GD库
- php配置GD库
- php 安装GD库
- php GD库
- php gd库
- php GD库
- php 封装gd 库
- PHP之GD库
- PHP - GD库
- php使用GD库
- PHP-GD库
- PHP GD库笔记
- PHP GD库
- php GD库使用
- PHP GD库的支持
- php GD库的配置
- C语言深度剖析-----最终的胜利
- C++11:利用模板简化重载右值引用参数的函数
- 捡了西瓜丢芝麻——注意编程细节
- JAVA的Date类与Calendar类(常用方法)
- The project is using an unsupported version of the Android Gradle plug-in
- PHP - GD库
- webgl开源三维引擎的选择
- 面试准备
- c++程序设计笔记(4)
- C#如何做到真正的四舍五入
- 设计模式之命令模式
- python程序中yield用法。
- 设置状态栏的颜色和隐藏
- 朱老师ARM裸机学习笔记(二):S5PV210的内存映射