• 大小: 45KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-03
  • 语言: Java
  • 标签: java  QQ  验证码  

资源简介

效果图: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


评论

共有 条评论