首页 > 编程知识 正文

验证码图片 图片素材,java图片验证码识别

时间:2023-05-05 22:29:33 阅读:151722 作者:3483

http://www.Sina.com/http://www.Sina.com /

开发工具与关键技术:

Visual Studio + C#

撰写时间:2019.6.16

在我们日常生活中所使用到的登录页面,经常会遇到需要输入验证码登录,根据生成的验证码图片输入正确的字符串(一般都是字母+数字)进行验证,验证码不正确则无法验证登陆。那么我们是如何去随机生成不同的验证码图片的呢?下面就来进行简要的介绍。

如下图,是我们经常看到的登陆界面的验证部分,如果你觉得右边验证码无法辨别,点击验证码图片可以随机切换生成另外字符。

首先,我们需要去使用验证码图片和验证码生成工具类(公共静态类),使用ValidCodeUtils生成验证码字符串和图片。里面存放着两个方法 一:获得随机字符串;二:根据字符串创建验证码图片。

产生数字和密码混合的随机数的方法,然后有一个参数intLength随机数的长度。创建一个C#的随机类Random,用来随机生成数字。然后开始循环随机类,也就是需要生成多长的字符串就循环多少次,并且需要把生成的数字转换成字符产生一个非负随机整数。

再然后根据当前随机数来确定字符串,首先,如果intRandom % 3 等于0,就会产生一个十六进制的字符,强制转换成char获取对应的值,也就是产生数字。如果intRandom % 3 等于1,位数产生大写字母,否则成产生小写字母。最后拼接字符串,再返回。

注:intRandom % 3 获取的是intRandom/3 得到的余数。

3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com /

3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com /

Random:表示伪随机数生成器,一种能够产生满足某些随机性统计要求的数字序列的设备。

然后我们来根据字符串创建验证码图片,并且返回的是二进制数组。上面是生成验证码图片的方法代码,下面开始说明一下生成图片的重点原理。创建验证码图片相当于在一个区域里面绘画出获取的字符串的过程。

一:首先新增图片,

Bitmap是用于处理由像素数据定义的图像的对象,相当于新增一张空白的纸,

Graphics相当于绘图图面的笔,Clear清除整个绘图面并以指定背景色填充。

二:在图片中绘制内容,

SolidBrush

表示此画笔的颜色。简要说明一下参数,strRandom是获取到的字符串,Font 是设置绘画出来的文字的样式(字体、大小),字体颜色,最后的(12,4)是绘画开始的位置,X轴坐标,Y轴坐标。

三:在图片上绘制干扰线,绘制干扰线的作用是为了避免机器进行识别。随机画10条任意起点及终点的线,然后限制X轴不能超过宽,Y轴不能超过高度。

四:绘制图片的前景干扰点,直接设置随机的X轴坐标,Y轴坐标,然后设置100个任意颜色的点,然后在最外边绘制边框。

五:将图转保存到内存流中,并且将流内容写入byte数组返回。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。