Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java生成验证码

作者:故事没有她   发布日期:2025-10-20   浏览:104

import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.Random;

public class CaptchaGenerator {

    // 验证码字符集
    private static final String CAPTCHA_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    // 验证码长度
    private static final int CAPTCHA_LENGTH = 6;
    // 图片宽度和高度
    private static final int WIDTH = 120;
    private static final int HEIGHT = 40;

    public static BufferedImage generateCaptcha() {
        // 创建图像缓冲区
        BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
        Graphics2D g2d = image.createGraphics();

        // 设置背景颜色为白色
        g2d.setColor(Color.WHITE);
        g2d.fillRect(0, 0, WIDTH, HEIGHT);

        // 设置字体
        Font font = new Font("Arial", Font.BOLD, 24);
        g2d.setFont(font);

        // 设置文字颜色为黑色
        g2d.setColor(Color.BLACK);

        // 创建随机数生成器
        Random random = new Random();
        StringBuilder captchaText = new StringBuilder();

        // 生成随机验证码字符
        for (int i = 0; i < CAPTCHA_LENGTH; i++) {
            int index = random.nextInt(CAPTCHA_CHARS.length());
            char c = CAPTCHA_CHARS.charAt(index);
            captchaText.append(c);

            // 在随机位置绘制字符
            int x = i * WIDTH / CAPTCHA_LENGTH;
            int y = HEIGHT - 5;
            g2d.drawString(String.valueOf(c), x, y);
        }

        // 添加干扰线
        for (int i = 0; i < 5; i++) {
            g2d.setColor(getRandomColor());
            int x1 = random.nextInt(WIDTH);
            int y1 = random.nextInt(HEIGHT);
            int x2 = random.nextInt(WIDTH);
            int y2 = random.nextInt(HEIGHT);
            g2d.drawLine(x1, y1, x2, y2);
        }

        // 释放资源
        g2d.dispose();

        // 返回生成的验证码图片
        return image;
    }

    // 获取随机颜色
    private static Color getRandomColor() {
        Random random = new Random();
        int r = random.nextInt(256);
        int g = random.nextInt(256);
        int b = random.nextInt(256);
        return new Color(r, g, b);
    }

    public static void main(String[] args) {
        // 测试生成验证码
        BufferedImage captchaImage = generateCaptcha();
        // 可以将生成的图片保存到文件或显示在GUI中
    }
}

解释说明:

  1. 验证码字符集CAPTCHA_CHARS 包含了所有可能用于生成验证码的字符,包括大写字母和数字。
  2. 验证码长度CAPTCHA_LENGTH 定义了验证码的长度,默认为6个字符。
  3. 图片尺寸WIDTHHEIGHT 分别定义了生成的验证码图片的宽度和高度。
  4. 生成验证码图片generateCaptcha() 方法创建了一个空白的图片,并在上面绘制随机生成的验证码字符。同时,为了增加验证码的复杂度,添加了一些随机的干扰线。
  5. 随机颜色getRandomColor() 方法用于生成随机的颜色,用于绘制干扰线。
  6. 测试代码main 方法中调用了 generateCaptcha() 来生成一张验证码图片,你可以将其保存到文件或显示在GUI中。

希望这段代码对你有帮助!

上一篇:java list按照某个属性排序

下一篇:java ioexception

大家都在看

java连接数据库的代码

java djl

ubuntu 卸载java

java读取excel中的图片

java新建

java sort用法

java collections.sort

java file类的方法

java发送qq邮件

java 判断

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站