验证码图片 图片素材,java图片验证码识别
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数组返回。