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

java 验证码

作者:碎花洋裙的优雅   发布日期:2025-02-12   浏览:57

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

public class CaptchaGenerator {

    // 定义验证码的宽度和高度
    private static final int WIDTH = 100;
    private static final int HEIGHT = 50;
    private static final String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

    public static BufferedImage generateCaptcha() {
        // 创建一个BufferedImage对象,用于绘制验证码图片
        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 < 5; i++) {
            int index = random.nextInt(CHARACTERS.length());
            char c = CHARACTERS.charAt(index);
            captchaText.append(c);

            // 绘制字符到图像上
            g2d.drawString(String.valueOf(c), i * (WIDTH / 5), HEIGHT - 10);
        }

        // 添加一些干扰线
        g2d.setStroke(new BasicStroke(2));
        for (int i = 0; i < 5; i++) {
            g2d.setColor(getRandomColor());
            g2d.drawLine(random.nextInt(WIDTH), random.nextInt(HEIGHT), random.nextInt(WIDTH), random.nextInt(HEIGHT));
        }

        // 关闭绘图上下文
        g2d.dispose();

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

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

    public static void main(String[] args) {
        // 测试生成验证码
        BufferedImage captchaImage = generateCaptcha();
        // 这里可以将captchaImage保存为文件或在Web应用中返回给客户端
    }
}

解释说明:

  1. BufferedImage: 用于创建一个内存中的图像对象,我们可以在上面绘制图形和文本。
  2. Graphics2D: 提供了更高级的绘图功能,如绘制文本、线条等。
  3. Font: 设置验证码的字体样式。
  4. Random: 用于生成随机字符和颜色。
  5. 干扰线: 为了增加验证码的复杂度,防止简单的OCR识别,我们在验证码图片上添加了一些随机的干扰线。
  6. getRandomColor(): 方法用于生成随机颜色,使验证码更加多样化。

通过这个类,你可以生成一个包含随机字符和干扰线的验证码图像。

上一篇:java 自定义线程池

下一篇:string在java中代表什么

大家都在看

java连接数据库的代码

ubuntu 卸载java

java sort用法

java collections.sort

java file类的方法

java 判断

java时间数据类型

java 时间加一天

java demo

java 截取

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

Laravel 中文站