Android-图片验证码生成
1、为啥要验证码?
图片验证码在网络中使用的是比较普遍的。一般都是用来防止恶意破解密码、刷票、论坛灌水、刷页等。

2、怎样的验证码比较好?

验证码的获取方式无非就两种,一种是后台提供一个接口,返回图片的地址和验证码,然后你去请求验证码再显示出来。另一种是直接的在本地生成验证码。后台提供的话,肯定对前端开发人员来说方便很多,拿到直接使用,而对于用户来说就不怎么好了。一张验证码最少要请求两次网络,如果网络不好,验证码加载就会很慢,如果验证码看不清,那就再加载一次,那就呵呵了,所以,本地实现虽然相对来说略显麻烦,但好处是比较明显的,除非项目紧急,让后台那边生成。除此以外还是前端生成比较靠谱。 生成验证码的步骤
1、既然要画,肯定要画布canvas和画笔paint。
2、底色,背景,根据需要可以对验证码的背景颜色进行不同的绘制,这里采用灰色
3、画验证码,这步就比较复杂了,画Text在Android中是这样的,drawText()方法中传进去的X、Y的坐标指的是字的左下角的坐标,也就是说,如果画A,那么坐标点是A的左下角,但画g,那就是g的上半部分圆的左下角。不满足的还可以加点料,画倾斜的验证码。
如下图所示(红线交叉点):不明白的可以参考这里

4、验证码画完就画干扰线和干扰点。
<这里需要注意的是:画字母的时候,要注意顺序,不然如果你画的是ABCD,结果画出来是ACDB,这样,验证码就没意义了。>
基本上画验证码的步骤就是上面几个了。 完整的项目代码:
代码里面注释比较详细了,这里就不再解释。看完基本都懂。这个实例代码只有干扰线,而没有画干扰点了,需要完善的可以自己加上去,还有对于字体,还可以来个倾斜等,各位自己完善吧,此栗子仅供参考! 改如何使用?
上一句红底的是获取验证码图片。下面的那句是获取验证码。
我这里取的都是默认值,如果你要自己设置宽高,字体颜色等就要先获取CaptchaImageUtil对象,然后再设置,最后才是调用createCodeImage(),如果先创建后设置的话,用脚趾甲想想都可以明白这样是无效的。如果刷新验证码,就直接调用createCodeImage()即可。
最后看看效果图:
end
2016-10-25

最新文章

  1. yii基础应用目录结构
  2. SQL中order by;group up;like;关联查询join on的用法
  3. 我的android学习经历24
  4. 消格子时一个很深的bug的修复纪录
  5. VS2010开发环境最佳字体及配色[转]
  6. Q_INVOKABLE与invokeMethod用法全解
  7. 【暑假】[实用数据结构]UVa11995 I Can Guess the Data Structure!
  8. openerp 产品图片的批量写入
  9. MediaPlayer类——播放视频和音乐
  10. virus.win32.parite.H病毒的查杀方法
  11. Struts2.0+Spring3+Hibernate3(SSH~Demo)
  12. (转)SQLServer分区表操作
  13. 如何用Python编写一个聊天室
  14. 20165323 结对编程之四则运算week2-整体总结
  15. 如何配置Java环境变量[转]
  16. Objective-C 类簇深入理解
  17. JS编程题练习
  18. bzoj千题计划231:bzoj1997: [Hnoi2010]Planar
  19. dateframe取数据
  20. QWebEngine_C++_交互

热门文章

  1. 贝塞尔曲线(cubic bezier)
  2. [NHibernate]第一个NHibernate的应用配置
  3. Redis——学习之路四(初识主从配置)
  4. ASP.NET MVC3中Controller与View之间的数据传递
  5. POJ3461 KMP 模板题
  6. Android -- PopupWindow(其中嵌套ListView 可以被点击)
  7. git flow工作流实际项目实践
  8. CSS 是程序员的画笔
  9. Centos7强制卸载Mariadb
  10. swiper插件 纵向内容超出一屏解决办法