java Spring Boot验证码美化,白色背景 随机四个数 每个字随机颜色

我前文 Spring Boot2.7生成用于登录的图片验证码讲述了生成验证码的方法

但是这样生成验证码 非常难看

比较说 验证码是要展示到web程序中的 这样让用户看着 属实不太好

我们可以将接口改成

java 复制代码
@GetMapping(value = "/captcha", produces = MediaType.IMAGE_PNG_VALUE)
public void generateCaptcha(HttpServletResponse response) throws IOException {
    int width = 200;
    int height = 100;
    BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    Graphics2D graphics = image.createGraphics();

    // 设置背景为白色
    graphics.setColor(Color.WHITE);
    graphics.fillRect(0, 0, width, height);

    // 设置字体和字体大小
    Font font = new Font("Arial", Font.BOLD, 40);
    graphics.setFont(font);

    Random random = new Random();
    // 生成随机颜色并绘制每个字
    for (int i = 0; i < 4; i++) {
        int r = random.nextInt(256);
        int g = random.nextInt(256);
        int b = random.nextInt(256);
        Color color = new Color(r, g, b);
        graphics.setColor(color);
        String gin = String.valueOf(random.nextInt(10));
        System.out.println(gin);
        graphics.drawString(gin, 50 * i, 50);
    }

    // 输出图片
    ImageIO.write(image, "png", response.getOutputStream());
    graphics.dispose();
}

这里 我们生成了四个随机数 每个数的颜色都是不一样的 图片底为白色

gin 记录了每个随机数的值 如果你想验证用户输入的对不对 用他合在一起就好了

然后我们访问接口

返回了一个这样的图片给我们

然后 我们看控制台

gin在每次循环中 帮我们记录了 生成的数值

相关推荐
考虑考虑7 小时前
Mybatis实现批量插入
java·后端·mybatis
咖啡八杯8 小时前
GoF设计模式——中介者模式
java·后端·spring·设计模式
青石路12 小时前
记一次多JDK版本问题的排查,一坑套一坑,差点没爬上来
java
Java陈序员14 小时前
企业级!一个基于 Java 开发的开源 AI 应用开发平台!
spring boot·agent·mcp
像我这样帅的人丶你还15 小时前
Java 后端详解(五):Redis 缓存
java·后端·全栈
plainGeekDev17 小时前
GreenDAO → Room
android·java·kotlin
杨运交1 天前
[041][公共模块]分布式唯一ID生成器设计与实现:一款灵活可扩展的雪花算法框架
spring boot
亦暖筑序1 天前
Java 8老系统AI Workflow实战:把一次性AI对话升级成可恢复工作流
java·后端
敲代码的彭于晏1 天前
Bean 生命周期完全图解:前端同学也能看懂的 Spring 核心机制
java·前端·后端
plainGeekDev1 天前
ButterKnife → ViewBinding
android·java·kotlin