Android-简单的图片验证码
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
Android-简单的图片验证码的更多相关文章
- 一般处理程序生成简单的图片验证码并通过html验证用户输入的验证码是否正确
一般处理程序生成简单的图片验证码并通过html验证用户输入的验证码是否正确 最近没事研究了下验证码的的动态生成及通过cookie实现HTML页面对用户输入的验证码的校验,简要如下: 1.写 ...
- 用Java制作一个简单的图片验证码
//Java实现简单验证码功能 package project; import java.awt.Color; import java.awt.Font;import java.awt.Graphic ...
- Android 简单介绍图片压缩和图片内存缓存
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9316683 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工, ...
- Android 简单的图片缩放方法
很简单的一个图片缩放方法,注意要比例设置正确否则可能会内存溢出 相关问题 java.lang.IllegalArgumentException: bitmap size exceeds 32bits ...
- Android -- 简单的图片浏览器
1. 效果图
- android图片验证码--自绘控件
自绘控件的内容都是自己绘制出来的 大致流程如下: 1.定义一个类继承view 使用TypedArray初始化属性集合 在view的构造方法中 有一个AttributeSet的参数 很明显是用来保存控件 ...
- 开发工具类API调用的代码示例合集:六位图片验证码生成、四位图片验证码生成、简单验证码识别等
以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 六位图片验证码生成:包括纯数字.小写字母.大写字母.大小写混合.数 ...
- Python 实现简单图片验证码登录
朋友说公司要在测试环境做接口测试,登录时需要传入正确的图片的验证码,本着懒省事的原则,推荐他把测试环境的图片验证码写死,我们公司也是这么做的^_^.劝说无果/(ㄒoㄒ)/~~,只能通过 OCR 技术来 ...
- Android Demo手机获取验证码
注册很多app或者网络账户的时候,经常需要手机获取验证码,来完成注册,那时年少,只是觉得手机获取验证码这件事儿很好玩,并没有关心太多,她是如何实现的,以及她背后的故事到底是什么样子的,现在小编接手的这 ...
- 字符型图片验证码识别完整过程及Python实现
字符型图片验证码识别完整过程及Python实现 1 摘要 验证码是目前互联网上非常常见也是非常重要的一个事物,充当着很多系统的 防火墙 功能,但是随时OCR技术的发展,验证码暴露出来的安全问题也越 ...
随机推荐
- 转:Delphi2010新发现-类的构造和析构函数功能
Delphi2010发布了. 虽然凭着对Delphi的热爱第一时间就安装了,但是现在可能是年纪大了,对新事物缺乏兴趣了.一直都没有仔细研究. 今天有点时间试了一下新功能. 本来C#和Delphi.NE ...
- 学习android 官方文档
9.29 1. 今天,FQ,看到android studio中文网上有一个FQ工具openVPN,我就使用了. 之前用过一个FQ工具开眼,但由于网速慢,我就弃用了. 2. 现在,我就可以FQ去andr ...
- WPF menu
MenuMenu的样式很简单,就是顶部的那个框,如下图 而其中的文字“文件”“图形”...是属于MenuItem的,要灵活使用MenuItem,就需要了解MenuItem.Role的作用 TopLev ...
- 使用 Redis 实现排行榜功能
排行榜功能是一个很普遍的需求.使用 Redis 中有序集合的特性来实现排行榜是又好又快的选择. 一般排行榜都是有实效性的,比如“用户积分榜”.如果没有实效性一直按照总榜来排,可能榜首总是几个老用户,对 ...
- Mac无法写入移动硬盘
1.使用mac 磁盘工具,格式化移动硬盘 频繁穿插于mac于pc之间者,大批量拷贝大型文件者,请用exfat 首先,排除Fat32,虽然这是兼容性最好的文件格式,但一个不支持4g以上文件的格式(现在随 ...
- T-SQL Recipes之Common Function
在我们写SQL的时候,经常会用到许多内置方法,简化了我们许多代码,也提高了效率,这篇主要总结一些常用的方法. ISNULL VS COALESCE VS NULLIF 在SQL中,NULL值是比较特殊 ...
- 原生AJAX封装
var ajaxHelper = { /*1.0 浏览器兼容的方式创建异步对象*/ makeXHR: function () { //声明异步对象变量 var xmlHttp = false; //声 ...
- 用VB实现SmartQQ机器人
这里为了便于介绍程序设计的流程,更多以代码形式给出,具体可用火狐浏览器的firebug插件来抓包分析,或者用谷歌浏览器的开发者工具进行抓包.抓包地址是:http://w.qq.com 第一步,是二维码 ...
- 通过监听键盘,实现对UITextView的内容移动
视图出现时,增加观察 - (void)viewWillAppear:(BOOL)animated { // 增加对键盘的监听 [[NSNotificationCenter defaultCenter] ...
- 基于TCP协议的socket通信
一.服务器端 1.创建serverSocket,即服务器端的socket,绑定指定的端口,并侦听此端口 ServerSocket server = new ServerSocket(8888); 2. ...



end