PHP通过强大的拓展库来操作图片(GD库)
通过GD库 我们可以制作 验证码 缩略图 水印图等
使用GD库第一步就是在PHP的配置文件php.ini中打开GD库 (把extension=gd2去注释)
下面是GD库一些常用的函数
<?php
$img = imagecreatetruecolor();
//参数分别为画布的宽 高 像素单位 返回一个画布资源 后面会经常被拿来做参数
$_color = imagecolorallcate();
//绘画步分配颜色 参数为 上面的画布资源 RGB的参数 0-255 一共四个参数 返回一个颜色 后面会被用作参数
imagefill();
//填充颜色 四个参数 第一个参数为画布资源 第二个参数 第三个参数 确定从画布中的哪一个位置开始填充 自动找到至顶点颜色相同的相应点渲染
imageString();
//在画布中 水平写入字符串 6个参数 第一个参数为 画布资源 第二个参数为 字号 1-5 从小到大 第三个第四个参数确定字符串在画布的什么位置开始写 分别对应宽 高 左上角是0 0 第五个参数为要写入的字符串 第六个参数为字符串的颜色
imageline();
//制作一个线段 第一个参数为画布资源 第二个参数 第三个参数确定起始点 第四个参数 第五个参数 确定终止点 第六个参数为 干扰线颜色
imagecreatefromjpeg ();//打开一个jpeg资源
imagecreatefrompng(); //打开一个png自资源
imagejpeg();
imagepng();
//上面两个函数 第一个函数为对应的图片 画布资源 如果只有一个参数 那么此函数起到输出的功能
//第二个函数路径 如果有第二个资源 此函数起到保存的功能
imagecopymerge();
//拷贝图像合并到另外一张图片资源 常用于水印制作功能
imagecopyresamled();
//比较平滑的合并方式 不失真 常用于缩略图的制作
imagedestory();
//销毁图片 图片资源通常很大
getimagesize();
//获得图片信息
?>
接下来看一下 验证码 的制作
1 产生图片资源
2 产生背景色
3填充背景色
4获取随机字符串
5 产生字符串 随机颜色
6 将字符串写入画布
7 产生干扰线颜色
8 制作干扰线
9输出内容
10 销毁资源
<?php
/*
*封装一个制作验证码的方法
* @param width 确定在画图中的位置
* @param height
* @length=4 字符串长度
*/
function getCaptcha($w,$h,$length=4){
$img = imagecreatetruecolor($w,$h);
//获取画布资源 参数分别为宽高
$bg_color=imagecolorallocate($img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
//获取画布随机背景色
imagefill($img,0,0,$bg_color);
//填充颜色
$arr = range('A','Z');
shuffle($arr);//取得随机大写字符串 $str
for($a=0;$a<$length;$a++){
$str_color=imagecolorallocate($img,mt_rand(0,80),mt_rand(0,80),mt_rand(0,80));
//获得字符串随机颜色
imageString($img,5,30+$a*10,10,$arr[$a],$str_color);
//把字符串写入画图
}
for($a=0;$a<4;$a++){
$line_color=imagecolorallocate($img,mt_rand(100,160),mt_rand(100,160),mt_rand(100,160));
imageline($img,mt_rand(0,$w),mt_rand(0,$h),mt_rand(0,$w),mt_rand(0,$h),$line_color);
}
//制作四根随机干扰线
header('content-type:image/png');
//在响应头设置http协议 告诉浏览器 输出图片类型
imagePng($img);//验证码通常都是输出
imagedestory($img);
}
?>