java生成验证码

一:需求分析

使用java生成验证码:

1:生成画布,画好背景图

2:画随机数

3:画干扰线

4:将内存中的图片保存到硬盘上

二:代码如下

 1 /**
 2  * 
 3  */
 4 package com.hlcui.io;
 5 
 6 import java.awt.Color;
 7 import java.awt.Font;
 8 import java.awt.Graphics;
 9 import java.awt.image.BufferedImage;
10 import java.io.File;
11 import java.io.IOException;
12 import java.util.Random;
13 
14 import javax.imageio.ImageIO;
15 
16 /**
17  * @author Administrator 生成验证码
18  */
19 public class ValidateCode {
20     // 定义画布的宽和高
21     public static final int WIDTH = 300;
22     public static final int HEIGHT = 150;
23     public static BufferedImage bi;
24     public static Graphics g;
25     public static Random r = new Random();
26 
27     // 生成min到max之间的随机数
28     private static int r(int min, int max) {
29         int num = r.nextInt(max - min) + min;
30         return num;
31     }
32 
33     // 画背景图
34     public static void generateBg() {
35         bi = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
36         g = bi.getGraphics();
37         g.setColor(new Color(r(0, 255), r(0, 255), r(0, 255))); // 设置画布的背景色
38         g.fillRect(0, 0, WIDTH, HEIGHT); // 填充
39     }
40 
41     // 画随机数
42     public static void generateNum() {
43         String words = "abcdefghijklmnopqrstuvwxyz0123456789";
44         for (int i = 0; i < 4; i++) {
45             g.setColor(new Color(r(0, 255), r(0, 255), r(0, 255)));
46             g.setFont(new Font("微软雅黑", Font.PLAIN, 70));
47             char c = words.charAt(r(0, words.length()));
48             g.drawString(String.valueOf(c), 40 + i * 60, r(40, HEIGHT - 40));
49         }
50     }
51 
52     // 画干扰线
53     public static void generateLine() {
54         for (int i = 0; i < 25; i++) {
55             g.setColor(new Color(r(0, 255), r(0, 255), r(0, 255)));
56             g.drawLine(r(0, WIDTH), r(0, HEIGHT), r(0, WIDTH), r(0, HEIGHT));
57         }
58     }
59 
60     // 将图片从内存输出到硬盘
61     public static void save() throws IOException {
62         File file = new File("f:/1.png");
63         ImageIO.write(bi, "png", file);
64         System.out.println("保存完成!");
65     }
66 
67     // 测试
68     public static void main(String[] args) throws IOException {
69         generateBg();
70         generateNum();
71         generateLine();
72         save();
73     }
74 }

三:生成验证码图片

以上代码均已经验证!

原文地址:https://www.cnblogs.com/warrior4236/p/5690025.html