JAVA之实现一个简单的验证码生成器

/*
一个非常简单的数字字母验证码生成器
*/
public
class VerifyCode { private int w = 70; private int h = 35; private Random r = new Random(); private String[] fontNames = {"宋体", "华文楷体", "黑体", "微软雅黑", "楷体_GB2312"}; private String codes = "23456789abcdefghjkmnopqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ"; private Color bgColor = new Color(255, 255, 255); private String text ; //随机生成颜色 private Color randomColor () { int c1 = r.nextInt(150); int c2 = r.nextInt(150); int c3 = r.nextInt(150); return new Color(c1, c2, c3); } //随机生成字体 private Font randomFont () { int index = r.nextInt(fontNames.length); String fontName = fontNames[index]; int style = r.nextInt(4); int size = r.nextInt(5) + 24; return new Font(fontName, style, size); } //产生干扰线 private void drawLine (BufferedImage image) { int num = 3; Graphics2D g2 = (Graphics2D)image.getGraphics(); for(int i = 0; i < num; i++) { int x1 = r.nextInt(w); int y1 = r.nextInt(h); int x2 = r.nextInt(w); int y2 = r.nextInt(h); g2.setStroke(new BasicStroke(1.5F)); g2.setColor(Color.BLUE); g2.drawLine(x1, y1, x2, y2); } } //生成验证码的值 private char randomChar () { int index = r.nextInt(codes.length()); return codes.charAt(index); } //得到画布 private BufferedImage createImage () { BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); Graphics2D g2 = (Graphics2D)image.getGraphics(); g2.setColor(this.bgColor); g2.fillRect(0, 0, w, h); return image; } //生成图片 public BufferedImage getImage () { BufferedImage image = createImage(); Graphics2D g2 = (Graphics2D)image.getGraphics(); StringBuilder sb = new StringBuilder(); for(int i = 0; i < 4; i++) { String s = randomChar() + ""; sb.append(s); float x = i * 1.0F * w / 4; g2.setFont(randomFont()); g2.setColor(randomColor()); g2.drawString(s, x, h-5); } this.text = sb.toString(); drawLine(image); return image; } //得到验证码的值 public String getText () { return text; } //设置输出方法 type为生成的图片类型 public static void output (BufferedImage image,String type, OutputStream out) throws IOException { ImageIO.write(image, type, out); } }
posted @ 2017-10-16 17:06  meetzy  阅读(871)  评论(0编辑  收藏  举报