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技术的发展,验证码暴露出来的安全问题也越 ...
随机推荐
- 转:WaitForSingleObject()函数、WaitForMultipleObject()函数
http://blog.csdn.net/xiaobai1593/article/details/6672193 在多线程下面,有时候我们会希望等待某一线程完成了再继续做其他事情,要实现这个目的,可以 ...
- Delphi的三目运算 ifthen 和iif
system.Math和system.StrUtils都有IfThen方法, 返回字符串和 返回 数值型 system.Math.IfThen(vehicle.MILE=0,0,StrToFloat( ...
- c#取得应用程序根目录
1.取得控制台应用程序的根目录方法 方法1.Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径方法2.AppDomain.CurrentDomain.Bas ...
- SDOI2009
1226: [SDOI2009]学校食堂Dining Description 小F 的学校在城市的一个偏僻角落,所有学生都只好在学校吃饭.学校有一个食堂,虽然简陋,但食堂大厨总能做出让同学们满意的菜肴 ...
- Python for Infomatics 第14章 数据库和SQL应用三(译)
14.5 SQL 总结 到目前为止,我们在Python示例程序中使用了SQL,并且涉及了许多SQL基础.在这一小节中,我们特别审视SQL语言,并对其语法进行回顾. 虽然有很多不同的数据库供应商,但因S ...
- [知识点]字符串Hash
1.前言 字符串的几大主要算法都多少提及过,现在来讲讲一个称不上什么算法, 但是非常常用的东西——字符串Hash. 2.Hash的概念 Hash更详细的概念不多说了,它的作用在于能够对复杂的状态进行简 ...
- js闭包-在你身边却不知
今天组里小伙很纳闷的问了我js绑事件带出的一个小问题,随便聊聊闭包那点事,背景如下: 当点击Button的时候给li绑定事件,事件的大概内容是获取li位置的index再做点事,据他描述代码看上去也没错 ...
- label 多行显示自适应高度
//项目中显示 地址:XXXXXXX换行 UILabel *numLable = [[UILabel alloc] initWithFrame:CGRectMake(80, 50, 40, 20)] ...
- svn 应该忽略的文件(visual studio)
*.o *.lo .la ## .*.rej .rej .~ ~ .# .DS_Store thumbs.db Thumbs.db *.bak *.class *.exe *.dll *.mine * ...
- hibernate中SessionFactory与Session的作用
首先,SessionFactory是线程安全的,SessionFactory用到了工厂模式. 其创建和销毁需要耗费很大的资源,所以一个应用中的一个数据库一般只对应一个sessionfactory. S ...



end