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-简单的图片验证码的更多相关文章

  1. 一般处理程序生成简单的图片验证码并通过html验证用户输入的验证码是否正确

    一般处理程序生成简单的图片验证码并通过html验证用户输入的验证码是否正确       最近没事研究了下验证码的的动态生成及通过cookie实现HTML页面对用户输入的验证码的校验,简要如下: 1.写 ...

  2. 用Java制作一个简单的图片验证码

    //Java实现简单验证码功能 package project; import java.awt.Color; import java.awt.Font;import java.awt.Graphic ...

  3. Android 简单介绍图片压缩和图片内存缓存

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9316683 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工, ...

  4. Android 简单的图片缩放方法

    很简单的一个图片缩放方法,注意要比例设置正确否则可能会内存溢出 相关问题 java.lang.IllegalArgumentException: bitmap size exceeds 32bits ...

  5. Android -- 简单的图片浏览器

    1. 效果图

  6. android图片验证码--自绘控件

    自绘控件的内容都是自己绘制出来的 大致流程如下: 1.定义一个类继承view 使用TypedArray初始化属性集合 在view的构造方法中 有一个AttributeSet的参数 很明显是用来保存控件 ...

  7. 开发工具类API调用的代码示例合集:六位图片验证码生成、四位图片验证码生成、简单验证码识别等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 六位图片验证码生成:包括纯数字.小写字母.大写字母.大小写混合.数 ...

  8. Python 实现简单图片验证码登录

    朋友说公司要在测试环境做接口测试,登录时需要传入正确的图片的验证码,本着懒省事的原则,推荐他把测试环境的图片验证码写死,我们公司也是这么做的^_^.劝说无果/(ㄒoㄒ)/~~,只能通过 OCR 技术来 ...

  9. Android Demo手机获取验证码

    注册很多app或者网络账户的时候,经常需要手机获取验证码,来完成注册,那时年少,只是觉得手机获取验证码这件事儿很好玩,并没有关心太多,她是如何实现的,以及她背后的故事到底是什么样子的,现在小编接手的这 ...

  10. 字符型图片验证码识别完整过程及Python实现

    字符型图片验证码识别完整过程及Python实现 1   摘要 验证码是目前互联网上非常常见也是非常重要的一个事物,充当着很多系统的 防火墙 功能,但是随时OCR技术的发展,验证码暴露出来的安全问题也越 ...

随机推荐

  1. Esri的开源JS项目杂谈

    一提到Esri大家首先想到的是庞大的ArcGIS产品大家族,其产品包含从桌面端,到服务器/云端,再到web/移动端.作为一名极客,不聊开源逼格似乎上不去啊.其实,Esri作为一个开放的平台,不仅有稳定 ...

  2. files list file for package 'xxx' is missing final newline

    #!/usr/bin/python # 8th November, 2009 # update manager failed, giving me the error: # 'files list f ...

  3. make工作时的执行步骤

    GNU的make工作时的执行步骤 (1)读入所有的Makefile (2)读入被include的其它Makefile (3)初始化文件中的变量 (4)推导隐晦规则,并分析所有的规则 (5)为所有的目标 ...

  4. 在mvc里面有htmlhelper方法,在webform里面有什么?

    终于是找到原来在webform里面已经提供了htmlcontrol这样的控件,可以直接拿来用.以前一直在想mvc有htmlhelper,webform里面不能用,其实是webform里面已经有了. 例 ...

  5. java中内存分配策略及堆和栈的比较

    Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间 ...

  6. SQL 提高查询效率

    1.关于SQL查询效率,100w数据,查询只要1秒,与您分享: 机器情况p4: 2.4内存: 1 Gos: windows 2003数据库: ms sql server 2000目的: 查询性能测试, ...

  7. c#/js代码命名规范及代码规范

    常用命名 列表,lUser 数组,arrUser 字符串,strTitle 用,分割的字符串,strStatuss(多个用逗号分割的状态) C# Entity层 统一以E开始,比如EUser,EOrd ...

  8. bzoj 2563: 阿狸和桃子的游戏

    开始写了一些东西但是后来浏览器挂了就没有存下来简直!!!!!!!!!!!!!QAQ 不想再写一遍了...总之是简单贪心. #include <iostream> #include < ...

  9. 关于i和j

    算法课无聊随手写了段c代码,发现了个问题,就要下课了,先记一下 for(int i = 0; i < 100; i ++) for(int j = 0; j < 100000; j ++) ...

  10. 使用iframe的优缺点,为什么少用iframe以及iframe和frame的区别。

    注:HTML5不再支持使用frame,iframe只有src 属性一.使用iframe的优缺点优点:1.程序调入静态页面比较方便;2.页面和程序分离;缺点:1.iframe有不好之处:样式/脚本需要额 ...