1 packagecom.util;2
3 importjava.awt.Color;4 importjava.awt.Font;5 importjava.awt.Graphics;6 importjava.awt.Graphics2D;7 importjava.awt.RenderingHints;8 importjava.awt.geom.AffineTransform;9 importjava.awt.image.BufferedImage;10 importjava.io.File;11 importjava.io.FileOutputStream;12 importjava.io.IOException;13 importjava.io.OutputStream;14 importjava.util.Arrays;15 importjava.util.Random;16
17 importjavax.imageio.ImageIO;18
19
20 public classVerifyCodeUtils {21
22 //使用到Algerian字体,系统里没有的话需要安装字体,字体只显示大写,去掉了1,0,i,o几个容易混淆的字符
23 public static final String VERIFY_CODES = "23456789ABCDEFGHJKLMNPQRSTUVWXYZ";24 private static Random random = newRandom();25
26
27 /**
28 * 使用系统默认字符源生成验证码29 *@paramverifySize 验证码长度30 *@return
31 */
32 public static String generateVerifyCode(intverifySize){33 returngenerateVerifyCode(verifySize, VERIFY_CODES);34 }35
36 /**
37 * 使用指定源生成验证码38 *@paramverifySize 验证码长度39 *@paramsources 验证码字符源40 *@return
41 */
42 public static String generateVerifyCode(intverifySize, String sources){43 if(sources == null || sources.length() == 0){44 sources =VERIFY_CODES;45 }46 int codesLen =sources.length();47 Random rand = newRandom(System.currentTimeMillis());48 StringBuilder verifyCode = newStringBuilder(verifySize);49 for(int i = 0; i < verifySize; i++){50 verifyCode.append(sources.charAt(rand.nextInt(codesLen-1)));51 }52 returnverifyCode.toSt