GD函数库基础一:PHP绘制验证码图片基础

PHP基础建设中,绘制验证码是一个基础却又无法跳过的步骤,今天就来简单的分享一下使用GD函数库在PHP代码中绘制图片验证码的,代码算作基础,直接上代码,注释里面看解释吧!

<?php
$image=imagecreatetruecolor(200,80);//创建画布,参数200和80代表的是画布的宽和高,默认参数是PX,翻译一下就是绘制宽200PX高度80PX的一个图形画布
$red1=imagecolorallocate($image,220,220,220);//创建填充颜色,表示给$image画布创建对应的颜色,后面的参数220分别代表R,G,B三种数值填充画布背景色
//绘制干扰线,绘制20条干扰线
for($i=0;$i<20;$i++){
       //获取随机位置,画布是200*80,所以宽度取值随机数不高于200,高度取值随机数不高于80
    $x1=mt_rand(0,200);
    $y1=mt_rand(0,80);
    $x2=mt_rand(0,200);
    $y2=mt_rand(0,80);
    //为线段获取随机颜色
    $r3=mt_rand(0,255);
    $g3=mt_rand(0,255);
    $b3=mt_rand(0,255);
    $red2=imagecolorallocate($image,$r3,$g3,$b3);
    //绘制线段颜色并且填充完毕
    imageline($image,$x1,$y1,$x2,$y2,$red2);//PHP绘制直线函数,IMAGELINE ,其中$image代表所在绘制目的画布,$x1,$y1代表直线起始点位坐标,$x2,$y2代表直线终点坐标,$red2代表直线绘制的颜色填充
}
//绘制干扰点100个随机,循环产生
for($i=0;$i<100;$i++){
    //获取随机位置画布是200*80,所以宽度取值随机数不高于200,高度取值随机数不高于80
    $x1=mt_rand(0,200);
    $y1=mt_rand(0,80);
    //获取随即颜色
    $r3=mt_rand(0,255);
    $g3=mt_rand(0,255);
    $b3=mt_rand(0,255);
    $red2=imagecolorallocate($image,$r3,$g3,$b3);    //绘制点颜色并且填充完毕
    imagesetpixel($image,$x1,$y1,$red2);//绘制像素点$image代表所在画布,$x1,$y1代表点所在的坐标位置,$red2代表点所存在的颜色
}
$size=30;
$angle=0;
$color2=imagecolorallocate($image,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));//绘制字体随机颜色
$fontfile=__DIR__."/fonts/SitkaB.ttc";//字体在绝对路径中索引
//随机生成4个字母数字
$string='qwertyuiopalskdjfhgmznxbc123456778';
$len=strlen($string);
for($i=0;$i<4;$i++){
$text.=$string[mt_rand(0,$len-1)];
}

imagettftext($image,$size,$angle,10,40,$color2,$fontfile,$text);
//imagettfeext 代表绘制文字,$image所在画布,$size代表字体大小$angle代表倾斜角度10*40就是文字的起始点x*y坐标,$color2代表字体颜色fontfile代表所在字体,$text代表绘制文字内容
header('content-type:image/png');//定义网页文本 输出类型
imagepng($image);//根据输出图片类型输出图片
imagedestroy($image);
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值