GD图像处理

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);
}


?>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值