php复习 第九天 绘制图形验证码

本文介绍如何使用PHP的GD库生成包含随机背景色、字母及干扰元素的验证码图像。通过设置随机的颜色和文本倾斜角度,增加了验证码的安全性和美观度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ps:不知为何,博主很喜欢正则和绘制这种东西。
使用的话,把$stringText的值取出即可~

<?php
header("Content-Type:image/jpeg");//告诉浏览器现在要输出图片

#图像处理 GD库 
#1)打开或创建相关函数:
#imagecreatetruecolor 创建真彩画布
#
#2)绘制图像相关函数:
#imagecolorallocate 分配颜色
#imagefill 区域填充,背景填充
#imagesetpixel 画一个单一像素
#imageline 画一条线
#imagestring 水平地画一行字符串。(可用下面的函数替代)
#imagettftext 用TrueType 字体向图像写入文本
#
#3)输出图像相关函数
#imagejpeg
#header
#imagegif
#imagepng
#imagewbmp
#
#4)释放资源
#imagedestroy
#在php中可以用GD库来对图像进行处理操作。
#由于我使用的是phpStudy集成环境,所以运行phpStudy.exe后,选择php扩展,找到gd2,打钩即可。


#案例 生成验证码:
#要求1:背景颜色可随机变换
#要求2:验证码文本为4位随机小写字母。
#要求3:充沛利用点与线来美化验证码。

$width = 140;
$height = 40;
//1.创建--真彩画布
$image = imagecreatetruecolor($width,$height);

//2.绘制 
#背景颜色--rgb颜色整体数值越高,图像颜色越浅。
$colorBg = imagecolorallocate($image, rand(150,255),rand(150,255),rand(150,255));

#背景色填充
imagefill($image, $width-1, $height-1, $colorBg);

#绘制干扰点
for($i = 0;$i <= 100;$i++){
    imagesetpixel($image, rand(1,$width-1), rand(1,$height-1), rand(0,150));
}

#绘制干扰线及颜色
for($i = 1; $i <= 3; $i++){
    $colorLine = imagecolorallocate($image, rand(50,150),rand(50,150),rand(50,150));
    $x1 = rand(1,$width/2);
    $y1 = rand(1,$height/2);
    $x2 = rand($width/2,$width-1);
    $y2 = rand($height/2,$height-1);
    imageline($image, $x1, $y1, $x2, $y2,$colorLine);//x1,y1,x2,y2坐标方式
}


#1)随机验证图案
$stringCode = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
#绘制随机验证文字、颜色
for($i = 1; $i <= 4; $i++ ){
    $stringText = $stringCode[rand(0,count($stringCode)-1)];
    #2)随机倾斜角度
    $angle = rand(-15,15);

    #3)绘制文字颜色
    $colorString = imagecolorallocate($image, rand(1,100), rand(1,100), rand(1,100));
    imagettftext($image, 20, $angle, $i*20, 30, $colorString, 'font/Gisha.ttf', $stringText);

}

//3.输出图像
imagejpeg($image);

//4.释放资源
imagedestroy($imagejpeg);

?>

附:这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值