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 后台 实现简单的验证码的更多相关文章

  1. java后台设计简单的json数据接口,设置可跨域访问,前端ajax获取json数据

    在开发的过程中,有时候我们需要设计一个数据接口.有时候呢,数据接口和Web服务器又不在一起,所以就有跨域访问的问题. 第一步:简单的设计一个数据接口. 数据接口,听起来高大上,其实呢就是一个简单的Se ...

  2. java实现一个简单的验证码生成器

    最近看了网上很多大佬们写的验证码生成,寻思着自己也写一个,话不多说,代码如下: import java.awt.BasicStroke; import java.awt.Color; import j ...

  3. Java 创建一个简单的验证码图片

    代码如下: package lixin.gan.test; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2 ...

  4. FastDFS图片服务器java后台的简单调用

    工具类: package com.liveyc.common.fdfs; import org.apache.commons.io.FilenameUtils; import org.csource. ...

  5. java代码实现简单的认证——图片验证码形式

    前言:认证在互联网中会经常见到,其主要作用是安全问题中防止恶意破解.刷票等.在系统开发中认证的实现也有很多种,什么手机短信认证,邮箱认证等.在这里我使用最基本的验证码的形式进行认证,下面例出过程. 验 ...

  6. Java之英格玛简单实现以及加密验证码的应用

    最近看了一部电影<模仿游戏>,<模仿游戏>中艾伦·图灵破译英格玛让我对英格玛产生了好奇,于是就开始翻阅资料对其进行研究,但是毕竟智慧有限,所以我这里用Java实现一个简单的英格 ...

  7. 怎样用Java自制优秀的图片验证码?这样!

    Completely Automated Public Turing test to tell Computers and Humans Apart 全自动区分计算机和人类的图灵测试 简称CAPTCH ...

  8. js加密后台加密解密以及验证码

    该文档为转载内容: 加密解密 1 前端js加密概述 2 前后端加密解密 21 引用的js加密库 22 js加密解密 23 Java端加密解密PKCS5Padding与js的Pkcs7一致 验证码 1 ...

  9. java后台异步任务执行器TaskManager

    java后台异步任务执行器TaskManager 此方式基于MVC方式: 一,使用任务: @Resource private TaskManager taskManager; public strin ...

随机推荐

  1. QT树莓派交叉编译开发环境搭建

    QT树莓派交叉编译开发环境搭建 - JerryZone <Cross-compiling Qt Embedded 5.5 for Raspberry Pi 2> <Qt for Em ...

  2. Cisco基础(四):配置标准ACL、配置扩展ACL、配置标准命名ACL、配置扩展命名ACL

    一.配置标准ACL 目标: 络调通后,保证网络是通畅的.同时也很可能出现未经授权的非法访问.企业网络既要解决连连通的问题,还要解决网络安全的问题. 配置标准ACL实现拒绝PC1(IP地址为192.16 ...

  3. Delphi直接读取XmL

    有时,只需要用XML作一些小的应用,比如只是简单地保存日志或者一些配置,这时我们只需要直接读写XML就好,效率第一. Delphi盒子有一个直接读写XML文件 (例子和代码),其核心函数为下面两个函数 ...

  4. 对象关系型数据库管理系统(PostgresQL )

    PostgresQL是   对象关系型数据库管理系统(ORDBMS).PostgreSQL支持大部分SQL标准并且提供了许多其他现代特性:复杂查询.外键.触发器.视图.事务完整性.MVCC.同样,Po ...

  5. CDN技术之-介绍

    “第一公里”是指万维网流量向用户传送的第一个出口,是网站服务器接入互联网的链路所能提供的带宽.这个带宽决定了一个网站能为用户提供的访问速度和并发访问量.如果业务繁忙,用户的访问数越多,拥塞越严重,网站 ...

  6. 膜神犇 DPH

    神犇 DPH 让我写博客.但是,似乎我已经开始写了?!! I am young and naïve!!! Let us orz DPH! 上节课讲DFS,这个是我最擅长的.“暴力出奇迹”!

  7. 尚学linux课程---12、vim操作命令2

    尚学linux课程---12.vim操作命令2 一.总结 一句话总结: 要看不同的视频,每个视频的关键点都不一样,不如之间的的视频就没讲到vim中set nu是什么意思 学了的内容一定要练,不然真的是 ...

  8. shell awk匹配字符串(从配置文件)

    配置文件 config.properties xxx_yyy_lib_path="路径" xxx_yyy_bin_path="路径" 想通过shell来读入路径 ...

  9. PHP数组循环遍历的几种方式

    PHP数组循环遍历 1.for循环 <?php //语法 for (init counter; test counter; increment counter) { code to be exe ...

  10. php的闭包函数use的使用

    PHP在默认情况下,匿名函数不能调用所在代码块的上下文变量,而需要通过使用use关键字. function getMoney() {   $rmb = 1;   $dollar = 6;   $fun ...