Home > Java > Javagetting Started > body text

Java implements dynamic picture verification code

王林
Release: 2020-01-09 17:21:48
forward
2600 people have browsed it

Java implements dynamic picture verification code

Purpose:

Prevent malicious form registration

Generate verification code image

1. Define width and height

int width = 100;
int height = 50;
Copy after login

2. Use BufferedImage to generate images in memory

BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Copy after login

3. Draw background and borders

Graphics g = image.getGraphics();
g.setColor(Color.WHITE);
g.fillRect(0, 0, width, height);
g.setColor(Color.BLACK);
g.drawRect(0, 0, width - 1, height - 1);
Copy after login

(Free learning video tutorial sharing: java video tutorial)

4. Create a random character set and random number object

//字符集
String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefgjijklmnopqrstuvwxyz";

//随机数
Random ran = new Random();
Copy after login

5. Create a random color generation method

private Color getRandomColor(Random random) {
    //获取随机颜色
    int colorIndex = random.nextInt(3);
    switch (colorIndex) {
        case 0:
            return Color.BLUE;
        case 1:
            return Color.GREEN;
        case 2:
            return Color.RED;
        case 3:
            return Color.YELLOW;
        default:
            return Color.MAGENTA;
    }
}
Copy after login

6. Draw Verification code characters

//绘制验证码
for (int i = 0; i < 4; i++) {
    //获取随机字符
    int index = ran.nextInt(str.length());
    char ch = str.charAt(index);
    //获取随机色
    Color randomColor = getRandomColor(ran);
    g.setColor(randomColor);
    //设置字体
    Font font = new Font("宋体", Font.BOLD, height / 2);
    g.setFont(font);
    //写入验证码
    g.drawString(ch + "", (i == 0) ? width / 4 * i + 2 : width / 4 * i, height - height / 4);
}
Copy after login

7, draw interference lines

//干扰线
for (int i = 0; i < 10; i++) {
    int x1 = ran.nextInt(width);
    int x2 = ran.nextInt(width);
    int y1 = ran.nextInt(height);
    int y2 = ran.nextInt(height);
    Color randomColor = getRandomColor(ran);
    g.setColor(randomColor);
    g.drawLine(x1, x2, y1, y2);
}
Copy after login

8, use ImageIO to output pictures

ImageIO.write(image, "jpg", resp.getOutputStream());
Copy after login

Java implements dynamic picture verification code

to achieve refresh effect

1. Create a new html page

2. Use the img tag to display images

<img  id="identcode" src="identcode" alt="Java implements dynamic picture verification code" >
<a id="refesh" href="">看不清,换一张</a>
Copy after login

3. Use js to achieve the refresh effect

//点击图片时
var img = document.getElementById("identcode");
img.onclick = function (){
    refesh();
}

//点击连接时
var a = document.getElementById("refesh");
a.onclick = function (){
    refesh();
    //返回false防止a标签默认href行为
    return false;
}

function refesh() {
    /**
     * 由于路径相同时浏览器会自动调用缓存中的图片
     * 所以在连接后加时间戳解决此问题
     */
    var date = new Date().getTime();
    img.src = "identcode?" + date;
}
Copy after login

Finally Rendering:

Java implements dynamic picture verification code

Recommended related articles and tutorials: java introductory tutorial

The above is the detailed content of Java implements dynamic picture verification code. For more information, please follow other related articles on the PHP Chinese website!

source:csdn.net
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template