kaptcha验证码
2016-03-03 20:17
423 查看
现在使用验证码的地方,比较多;kaptcha,是google开源的一个验证码生成工具,它和servlet绑定在一起,使用起来有好的地方,也有不好的地方;
其中之一就是使用起来,不够灵活。
现将其进行封装成,一个工具类,以便于随时随地使用,使用方法如下:
public static void main(String[] args) {
//验证码的属性
Properties properties = new Properties();
//边框
properties.put("kaptcha.border", "yes");
//边框为绿色
properties.put("kaptcha.border.color", "green");
//图片宽度
properties.put("kaptcha.image.width", "200");
//高度
properties.put("kaptcha.image.height", "50");
//字符数量
properties.put("kaptcha.textproducer.char.length", "4");
//字体大小
properties.put("kaptcha.textproducer.font.size", "40");
//字符间隔
properties.put("kaptcha.textproducer.char.space", "2");
//噪声颜色
properties.put("kaptcha.noise.color", "black");
//粘贴到浏览器,可以查看浏览器中的显示效果
String[] validateCode= KaptchaServiceUtil.geneValidateCode(properties);
System.out.println(validateCode[1]);
System.out.println(validateCode[0]);
}
粘贴到浏览器即可。
a243
data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAyAMgDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDt7a2g
a2iJhjJKAklR6VMLS3/594v++BSWn/HpD/1zX+VWBXNRo0/Zx91bLoceHw9J0o+6tl0XYiFpbf8A
PvF/3wKeLO2/594v++BXEav4u1PTvihpXh8CAafdxqzEod5J3jrn1Udq70Vp7Gl/KvuNvq9H+Rfc
iMWdr/z7Q/8AfApwsrX/AJ9of+/YqDUNV0/Sbfz9RvYLWL+9NIFz9M9a4u5+LFhPdfZPDmk6hrk4
PzGCMqgHrnBP6Ae9HsaX8q+4Pq9H+RfcjvRZWn/PrD/37FOFjaf8+sH/AH7FcsPF+s/9CTq//fcX
/wAVTh4w1n/oSdX/AO+4v/iqPY0v5V9wfV6P8i+5HUixtP8An1g/79inCws/+fSD/v2K5UeMNa/6
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
源码github地址:
https://github.com/linghushaoxia/kaptcha
其中之一就是使用起来,不够灵活。
现将其进行封装成,一个工具类,以便于随时随地使用,使用方法如下:
public static void main(String[] args) {
//验证码的属性
Properties properties = new Properties();
//边框
properties.put("kaptcha.border", "yes");
//边框为绿色
properties.put("kaptcha.border.color", "green");
//图片宽度
properties.put("kaptcha.image.width", "200");
//高度
properties.put("kaptcha.image.height", "50");
//字符数量
properties.put("kaptcha.textproducer.char.length", "4");
//字体大小
properties.put("kaptcha.textproducer.font.size", "40");
//字符间隔
properties.put("kaptcha.textproducer.char.space", "2");
//噪声颜色
properties.put("kaptcha.noise.color", "black");
//粘贴到浏览器,可以查看浏览器中的显示效果
String[] validateCode= KaptchaServiceUtil.geneValidateCode(properties);
System.out.println(validateCode[1]);
System.out.println(validateCode[0]);
}
粘贴到浏览器即可。
a243
data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAyAMgDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDt7a2g
a2iJhjJKAklR6VMLS3/594v++BSWn/HpD/1zX+VWBXNRo0/Zx91bLoceHw9J0o+6tl0XYiFpbf8A
PvF/3wKeLO2/594v++BXEav4u1PTvihpXh8CAafdxqzEod5J3jrn1Udq70Vp7Gl/KvuNvq9H+Rfc
iMWdr/z7Q/8AfApwsrX/AJ9of+/YqDUNV0/Sbfz9RvYLWL+9NIFz9M9a4u5+LFhPdfZPDmk6hrk4
PzGCMqgHrnBP6Ae9HsaX8q+4Pq9H+RfcjvRZWn/PrD/37FOFjaf8+sH/AH7FcsPF+s/9CTq//fcX
/wAVTh4w1n/oSdX/AO+4v/iqPY0v5V9wfV6P8i+5HUixtP8An1g/79inCws/+fSD/v2K5UeMNa/6
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
源码github地址:
https://github.com/linghushaoxia/kaptcha
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 源码被倒卖,大厂薅羊毛,开源真的只能被予取予求?
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序