生成验证码的java类(未测试)

来源:互联网 发布:政务软件 编辑:程序博客网 时间:2024/05/16 15:32
import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.util.HashMap;import java.util.Map;import java.util.Random; //验证码public final class ImageUtil {    private static final String[] chars = { "0", "1", "2", "3", "4", "5", "6",            "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "J", "K",            "L", "M", "N", "P" };    private static final int SIZE = 5;// 字符长度    private static final int LINES = 7;// 干扰线    private static final int WIDTH = 100;    private static final int HEIGHT = 50;    private static final int FONT_SIZE = 30;// 字体大小     public static Map<String, BufferedImage> createImage() {        StringBuffer sb = new StringBuffer();        BufferedImage image = new BufferedImage(WIDTH, HEIGHT,                BufferedImage.TYPE_INT_RGB);        Graphics graphic = image.getGraphics();        graphic.setColor(Color.LIGHT_GRAY);        graphic.fillRect(0, 0, WIDTH, HEIGHT);        Random ran = new Random();        // 画随机字符        for (int i = 1; i <= SIZE; i++) {             int r = ran.nextInt(chars.length);            graphic.setColor(getRandomColor());            graphic.setFont(new Font(null, Font.BOLD + Font.ITALIC, FONT_SIZE));            graphic.drawString(chars[r], (i - 1) * WIDTH / SIZE, HEIGHT / 2);            sb.append(chars[r]);// 将字符保存,存入Session        }        // 画干扰线        for (int i = 1; i <= LINES; i++) {            graphic.setColor(getRandomColor());            graphic.drawLine(ran.nextInt(WIDTH), ran.nextInt(HEIGHT),                    ran.nextInt(WIDTH), ran.nextInt(HEIGHT));        }        Map<String, BufferedImage> map = new HashMap<String, BufferedImage>();        map.put(sb.toString(), image);        return map;    }     public static Color getRandomColor() {        Random ran = new Random();        Color color = new Color(ran.nextInt(156), ran.nextInt(156),                ran.nextInt(156));        return color;    }}
0 0
原创粉丝点击