java 后台 实现简单的验证码
private int width =80;
private int height=30;
private Random r=new Random();
private String fontnames[]= {"宋体","华文楷体","黑体","微软雅黑","楷体_GBK2312"};
private String Codes="23456789QWERTYUOPASDFGHJKLZXCVBNMqwertyuopasdfghjklzxcvbnm";
private Color color=new Color(255,255,255);
private String text;
//随机颜色
public Color setColor(){
int red = r.nextInt(150);
int grreen = r.nextInt(150);
int blue = r.nextInt(150);
return new Color(red,grreen,blue);
}
//随机字体
private Font randomFont() {
int nextInt = r.nextInt(fontnames.length);
String fontnsmr= fontnames[nextInt];
int style=r.nextInt(4);
int size=r.nextInt(5)+24;
return new Font(fontnsmr, style, size);
}
//创建图片
private BufferedImage creatrimg() {
BufferedImage img=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = (Graphics2D)img.getGraphics();//得到画笔
graphics.setColor(this.color);
graphics.fillRect(0, 0, width, height);//fillRect(坐标,坐标,width,height)
return img;
}
//生成随机字符
private char randomChar() {
int r=this.Codes.length();
int index=this.r.nextInt(r);
char c=this.Codes.charAt(index);
return c;
}
//添加干扰线
private void drawLine(BufferedImage bfimg) {
Graphics2D graphics = (Graphics2D)bfimg.getGraphics();
for (int i = 0; i <3; i++) {
graphics.setStroke(new BasicStroke(1f));
graphics.setColor(Color.BLUE);
graphics.drawLine(r.nextInt(width), r.nextInt(height),r.nextInt(width),r.nextInt(height));
}
}
//得到验证码
public BufferedImage getimg() {
//创建图片缓冲区
BufferedImage bfimg=creatrimg();
//得到画笔
Graphics2D graphics = (Graphics2D)bfimg.getGraphics();
//装载生成的验证码
StringBuffer sb=new StringBuffer();
//向图片绘制四个字符
for (int i = 1; i < 5; i++) {
String randomChar = randomChar()+"";
sb.append(randomChar);
//设置当前字符的x 轴
float x=i*1.0f*width/5;
//设置随机字体
graphics.setFont(randomFont());
graphics.setColor(randomColor());
graphics.drawString(randomChar, x, height-=2);
}
this.text=sb.toString(http://www.my516.com);
//添加干扰线
drawLine(bfimg);
return bfimg;
}
---------------------
java 后台 实现简单的验证码的更多相关文章
- java后台设计简单的json数据接口,设置可跨域访问,前端ajax获取json数据
在开发的过程中,有时候我们需要设计一个数据接口.有时候呢,数据接口和Web服务器又不在一起,所以就有跨域访问的问题. 第一步:简单的设计一个数据接口. 数据接口,听起来高大上,其实呢就是一个简单的Se ...
- java实现一个简单的验证码生成器
最近看了网上很多大佬们写的验证码生成,寻思着自己也写一个,话不多说,代码如下: import java.awt.BasicStroke; import java.awt.Color; import j ...
- Java 创建一个简单的验证码图片
代码如下: package lixin.gan.test; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2 ...
- FastDFS图片服务器java后台的简单调用
工具类: package com.liveyc.common.fdfs; import org.apache.commons.io.FilenameUtils; import org.csource. ...
- java代码实现简单的认证——图片验证码形式
前言:认证在互联网中会经常见到,其主要作用是安全问题中防止恶意破解.刷票等.在系统开发中认证的实现也有很多种,什么手机短信认证,邮箱认证等.在这里我使用最基本的验证码的形式进行认证,下面例出过程. 验 ...
- Java之英格玛简单实现以及加密验证码的应用
最近看了一部电影<模仿游戏>,<模仿游戏>中艾伦·图灵破译英格玛让我对英格玛产生了好奇,于是就开始翻阅资料对其进行研究,但是毕竟智慧有限,所以我这里用Java实现一个简单的英格 ...
- 怎样用Java自制优秀的图片验证码?这样!
Completely Automated Public Turing test to tell Computers and Humans Apart 全自动区分计算机和人类的图灵测试 简称CAPTCH ...
- js加密后台加密解密以及验证码
该文档为转载内容: 加密解密 1 前端js加密概述 2 前后端加密解密 21 引用的js加密库 22 js加密解密 23 Java端加密解密PKCS5Padding与js的Pkcs7一致 验证码 1 ...
- java后台异步任务执行器TaskManager
java后台异步任务执行器TaskManager 此方式基于MVC方式: 一,使用任务: @Resource private TaskManager taskManager; public strin ...
随机推荐
- sql 基础语法3:分组,聚合函数,having,联合查询,快速备份,内联函数
select * from Classinfo select * from StuInfo select * from CourseInfo select * from ScoreInfo --分组 ...
- http协议和file协议的区别
1.在本地直接使用浏览器打开 html文件 和 通过本地服务器打开 html文件 有什么区别呢. https://segmentfault.com/q/1010000006554881/a-1 ...
- 关于自动化测试学习 selenium
selenium学习路线 配置你的测试环境,真对你所学习语言,来配置你相应的selenium 测试环境.selenium 好比定义的语义---“问好”,假如你使用的是中文,为了表术问好,你的写法是“你 ...
- oracle 中和mysql的group_concat有同样作用的写法
所有版本的oracle都可以使用select wm_concat(name) as name from user;但如果是oracle11g,使用select listagg(name, ',') w ...
- 一个普通函数的冷僻属性(length、caller、arguments、name、[[Scopes]]和[[FunctionLocation]])
https://blog.csdn.net/qq_17175013/article/details/81915059
- 中国HBase技术社区第一届Meetup资料大合集
2018年6月6号,由中国HBase技术社区组织,阿里云主办的中国第一次HBase Meetup在北京望京阿里中心举行,来自阿里.小米.滴滴.360等公司的各位HBase的PMC.committer共 ...
- 导数与偏导数 Derivative and Partial Derivative
之前做了很长时间“罗辑思维”的听众,罗胖子曾经讲起过,我们这一代人该如何学习.其中,就讲到我们这个岁数,已经不可能再去从头到尾的学习一门又一门工具课程了,而是在学习某一领域时,有目的的去翻阅工具课程中 ...
- CMS 开发全过程介绍
1.Web项目开发的一般流程 a) 需求确定 b) 需求分析 i. 架构分析和设计 ii. 业务逻辑分析和设计 iii. 界面设计 iv. 数据库的设计 c) 开发环境搭建 d) 开发和测试 e) 文 ...
- UVA 12821 Double Shortest Paths
Double Shortest PathsAlice and Bob are walking in an ancient maze with a lot of caves and one-way pa ...
- Spring整合Hibernate报错:annotatedClasses is not writable or has an invalid setter method
Spring 整合Hibernate时报错: org.springframework.beans.factory.BeanCreationException: Error creating bean ...