生成验证码图片

本文介绍了验证码功能,它用于拦截机器登录,而非拖慢用户登录。验证码模糊度过高会影响用户体验,设置时应保证可看清。还详细讲解了验证码的生成过程,包括获取随机字符串、创建验证码图片,以及绘制干扰线、干扰点等,最后说明了调用方法。

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

开发工具与关键技术:VS软件,生成验证码图片 
作者:陈隆
撰写时间:2019年06月16日

验证码是很多登陆的地方都会用到的一个功能,这个验证码功能或许是很多用户觉得很烦躁的一个功能,为什么这样说呢,因为很多用户都会觉得这个功能的体验就是拖慢用户的登陆时间,这时用户的脑袋里就会出现一个想法,就是这个登陆明明就是可以使用账号和密码就可也登陆的,为什么还设置一个验证码来拖慢用户的体验操作,说到这里就给验证码澄清一下吧,其实验证码不是用来拦截用户登陆的,是拦截机器登陆的,做这个验证码就是为了机器在登陆的时候无法识别动态的验证码,而且验证码都是有一些模糊的,这样机器就无法识别了。还有的就是如果验证码设置的模糊度太高,简单点来说就是很难看清楚验证码图片里的到底是什么的文字,这里也是会使用户感觉连登录个系统都这么费劲,用户就可能是因为这个验证码功能而对所做的系统有了偏见或者厌恶都是有可能的,做系统就是给用户使用的如果用户都不喜欢,那么所做的系统就有可能白费了心机了,所以在设置的时候要把验证码设置为可以看地清楚地就可以了。那么下面就写一下验证码到底是怎么生成的吧。(代码截图一)
在这里插入图片描述
这里的代码需要创建一个实体类来封装起来的,创建好实体类就可以在实体类里写验证码的代码了,我截图的代码就是实体类里的验证码代码,这里的代码分为两部分截图了,首先是需要获得随机字符串,上面截图就是写获得随机字符串这个的代码,先要产生数字和密码混合的随机数,然后就是new一个随机数,然后就是写一个for循环,循环后就需要产生一个非负的随机整数,然后就是根据当前随机数来确定字符串,然后需要判断,如果产生的字符串除以3得到的是它的余数就是对的,然后就产生数字,用位数来产生数字,然后在判断如果等于一就是位数产生大写字母,否则就是余数为2,产生小写字母,然后就把两个产生出来的字符串转换成string格式就可以了,最后把数据return返回到页面就可以了。那么下面就看第二部分的代码了,第二部分的代码就是制造一个空白的图片的,这个图片是用来装验证码的,那么就直接看代码的截图吧。
(代码截图二)
在这里插入图片描述
上图中的代码就是根据字符串创建验证码图片的代码,首先呢就是需要新增一张图片,写代码新增,括号中写的是图片需要的高度和宽度的,图片新增好之后还需要新增一支笔,可以说是笔吧,反正是用来绘制图片中的验证码的,到这里就相当于纸和笔都有了,那就可以写字了,然后就是在图片上绘制文字,相当于在纸上写字一样,只不过是代码在写,这里需要new一支笔的需要什么颜色的,也是在括号里写参数的,我这里需要的是红色的,选好笔之后就是设置字体,写入需要的文字就可以了,然后就在图片上绘制拦截机器登录的干扰线,这里需要写一个for循环来绘制干扰线,循环如果已经绘制的线小于十条就会自动增加,如果想要用户看得清除一些就把这个干扰线绘制少一些就可以了,干扰线越多就会越看不清楚的,我这里是绘制十条,这也不算多也不算少,应该是刚刚好的,也不会太容易看清楚,也不会不难看清楚,绘制好干扰线之后还需要绘制一些干扰点,就是在图片上点一些小点,这样机器就一定会无法识别了,而眼睛一样会看得清除验证码,然后就是给这个图片绘制一个边框了,最后将图片保存到内存流中,最后return将内存流中的内容写入byte数组返回就可以了。然后就完成了,直接调用就可以。那么接着就写一下调用的方法,具体代码看下面截图。(调用代码截图)
在这里插入图片描述
调用就直接在需要用验证码的地方的控制器中调用就可以了。这样就可以使用验证码功能了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值