资源简介
效果图:http://blog.csdn.net/ruixue0117/article/details/22829557。压缩包里包括Java代码和使用到的字体文件,如果不安装字体会使用系统默认字体。功能包括自定义图片尺寸和验证码长度,每个字符随机偏移角度,字符平滑边缘,含干扰线、噪点和背景扭曲。
代码片段和文件信息
package hh.com.util;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.LinearGradientPaint;
import java.awt.Paint;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Arrays;
import java.util.Random;
import javax.imageio.ImageIO;
public class VerifyCodeUtils{
//使用到Algerian字体,系统里没有的话需要安装字体,字体只显示大写,去掉了10io几个容易混淆的字符
public static final String VERIFY_CODES = “23456789ABCDEFGHJKLMNPQRSTUVWXYZ“;
private static Random random = new Random();
/**
* 使用系统默认字符源生成验证码
* @param verifySize 验证码长度
* @return
*/
public static String generateVerifyCode(int verifySize){
return generateVerifyCode(verifySize VERIFY_CODES);
}
/**
* 使用指定源生成验证码
* @param verifySize 验证码长度
* @param sources 验证码字符源
* @return
*/
public static String generateVerifyCode(int verifySize String sources){
if(sources == null || sources.length() == 0){
sources = VERIFY_CODES;
}
int codesLen = sources.length();
Random rand = new Random(System.currentTimeMillis());
StringBuilder verifyCode = new StringBuilder(verifySize);
for(int i = 0; i < verifySize; i++){
verifyCode.append(sources.charAt(rand.nextInt(codesLen-1)));
}
return verifyCode.toString();
}
/**
* 生成随机验证码文件并返回验证码值
* @param w
* @param h
* @param outputFile
* @param verifySize
* @return
* @throws IOException
*/
public static String outputVerifyImage(int w int h File outputFile int verifySize) throws IOException{
String verifyCode = generateVerifyCode(verifySize);
outputImage(w h outputFile verifyCode);
return verifyCode;
}
/**
* 输出随机验证码图片流并返回验证码值
* @param w
* @param h
* @param os
* @param verifySize
* @return
* @throws IOException
*/
public static String outputVerifyImage(int w int h OutputStream os int verifySize) throws IOException{
String verifyCode = generateVerifyCode(verifySize);
outputImage(w h os verifyCode);
return verifyCode;
}
/**
* 生成指定验证码图像文件
* @param w
* @param h
* @param outputFile
* @param code
* @throws IOException
*/
public static void outputImage(int w int h File outputFile String code) throws IOException{
if(outputFile == null){
return;
}
File dir = outputFile.getParentFile();
if(!dir.exists()){
dir.mkdirs();
}
try{
outputFile.createNewFile();
FileOutputStream fos = new FileOutputStream(outputFile);
outputImage(w h fos code);
fos.close();
} catch(IOException e){
throw e;
}
}
/**
* 输出指定验证码图片流
* @param w
* @param h
* @param os
* @param code
* @throws IOException
*/
public static void outputImage(int w int h OutputStream os String code) throws IOException{
in
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7613 2014-04-02 23:37 VerifyCodeUtils.java
文件 75272 1999-10-29 12:42 ALGER.TTF
----------- --------- ---------- ----- ----
82885 2
- 上一篇:jsp页面动态加载树形菜单
- 下一篇:java程序员职业生涯规划
相关资源
- java程序员职业生涯规划
- 北邮java作业3
- 北邮java作业1
- 北邮java作业
- javaweb天气预报
- java 调用 Cplex 使用手册
-
java生成二维码以及二维码转ba
se64字 - google-common.jar
- IEEE 802.3以太网帧封装——javafx可视化
- Java编程 翻译 编写程序,输入数字,
-
javax.xm
l.ws.Service 报错需要的包 - java语言 solitaire 纸牌游戏
- 精简版UC浏览器7.2 Java通用版 适合小内
- Java咖啡厅系统
- java拼图游戏(含源码)
- java 通讯录源码简单易懂
- JavaAgent-agentmain方式
- java 幸运52游戏
- java-根据word模板生成word-freemarker-完整
- Java学生选课系统
- 达内 java 全套视频百度云分享
-
Java通过Ole调用Windows Media Pla
yer - 百度AI人脸比对java
- Java浏览器
- des加密算法java实现
- 保存计算过程的计算器
- 贪吃蛇游戏(双人)JAVA源码
- java+Mysql课程设计
- 如何封装一个自己的组件
- javaee实现的简单留言板源代码+mysql数
评论
共有 条评论