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

news2025/2/28 21:46:18

我前文 Spring Boot2.7生成用于登录的图片验证码讲述了生成验证码的方法
但是这样生成验证码 非常难看
在这里插入图片描述
比较说 验证码是要展示到web程序中的 这样让用户看着 属实不太好

我们可以将接口改成

@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在每次循环中 帮我们记录了 生成的数值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1026887.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Webpack 热更新原理

什么是热更新 模块热替换(hot module replacement 或 HMR)是 webpack 提供的最有用的功能之一。它允许在运行时更新所有类型的模块&#xff0c;而无需完全刷新 一般的刷新我们分两种&#xff1a; 一种是页面刷新&#xff0c;不保留页面状态&#xff0c;就是简单粗暴&#xf…

思维链(Chain-of-Thought Prompting Elicits Reasoning in Large Language Models)

概括 论文主要描述了一种用思维链的提升LLM模型推理能力的方式&#xff0c;并且通过实验的方式&#xff0c;证明了思维链在算术、常识和符号等任务方面的显著效果。仅通过540B大小的PaLM模型&#xff0c;通过8个思维链样例就可以实现在GSM8K上的sota效果。 具体工作 这篇论文…

STM32 OLED屏幕显示详解

目录 1.OLED介绍 2.OLED如何显示一个点&#xff1f; 内存管理​编辑​编辑 页地址模式 水平地址模式​编辑 垂直地址模式 ​编辑 3.OLED显示图片 用到的库函数&#xff1a; 向OLED写命令的封装&#xff1a; 显示图片代码示例&#xff1a; 1.OLED介绍 OLED是有机发光…

论文笔记 DETR

detr 摘要和引言 2020论文facebook不需要proposal&#xff0c;不需要基于anchor的先验知识(比如预训练的模型)&#xff0c;也不需要NMS进行筛选&#xff0c;直接端到端不需要后处理利用transformer的全局建模能力&#xff0c;看成集合预测问题&#xff0c;不会输出很多冗余的…

谷歌AI机器人Bard发布强大更新,支持插件功能并增强事实核查;全面整理高质量的人工智能、机器学习、大数据等技术资料

&#x1f989; AI新闻 &#x1f680; 谷歌AI机器人Bard发布强大更新&#xff0c;支持插件功能并增强事实核查 摘要&#xff1a;谷歌的人工智能聊天机器人Bard发布了一项重大更新&#xff0c;增加了对谷歌应用的插件支持&#xff0c;包括 Gmail、Docs、Drive 等&#xff0c;并…

visual studio 安装包丢失或损坏

visual studio 安装包丢失或损坏 如下图所示为vs2015报错信息。 解决方案&#xff1a; 找到镜像文件或者压缩包的解压位置&#xff1b; 路径&#xff1a;C:\Users\Administrator\Desktop\packages 复制该路径至上图的请提供搜索包的位置。

高项新版教程(第四版)解读+学习指导

第四版主要内容 技术部分 信息化教程、软件工程、网络技术是原来的&#xff0c;学习原来的录播。 新基建、工业互联网、车联网、农业现代化、数字化转型、元宇宙等是新增&#xff0c;以直播讲。 管理部分 变化不是太大 。 整合管理、人力变为资源管理、风险管理新增内容。 …

在VMware虚拟机中固定CentOS系统ip(使用桥接模式)

目录 一、前置说明二、前置准备2.1、切换虚拟机网络为桥接模式2.2、查看本机网络信息 三、配置CentOS系统IP3.1、进入系统输入ip addr 查看本机网络配置名称3.2、查看网络配置目录&#xff0c;网络配置文件名称3.3、修改网络配置文件 ifcfg-ens33 固定IP3.4、重启网络 一、前置…

mysql-connector-java-8.0.11-sources.jar下载后无法运行

目录 问题背景 解决方法 1. 确保驱动已添加到项目中 2. 确保驱动版本与你的代码匹配 问题背景 今天写代码遇到这个报错&#xff0c;解决后发出来分享一下&#xff1a; java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver at java.net.URLClassLoader.findClass…

Kafka 时间轮算法

文章目录 前言Java 任务调度TimerDelayedWorkQueue的最小堆实现 时间轮Kafka中时间轮实现 前言 Kafka中存在大量的延时操作。 发送消息-超时重试机制的延时。ACKS 确认机制的延时。 Kafka并没有使用JDK自带的Timer或者DelayQueue来实现延迟的功能&#xff0c;而是基于时间轮…

系统架构设计师(第二版)学习笔记----需求工程

【原文链接】系统架构设计师&#xff08;第二版&#xff09;学习笔记----需求工程 文章目录 一、需求定义1.1 需求包含的内容1.2 软件需求的3个不同层次1.3 需求工程的阶段1.4 需求管理的主要内容 二、需求获取2.1 需求获取的基本步骤2.2 需求获取方法2.3 需求讨论会参与人员2.…

grafana对指标进行组合计算

在使用Grafana配置图表看板时&#xff0c;我们可能需要对多个查询条件筛选出来的结果进行计算&#xff0c;把计算结果生成最终的图表。此时需要用到transform功能【add field from calculation】&#xff1a;

ros2与web通信实例

ros2与web通信实例 最近需要进行ros2与web端进行通信操作&#xff0c;目标是ros2发送的消息web端能够显示在界面&#xff0c;并且前端能够发布数据&#xff0c;最终实例如下&#xff1a; 然而网上查的的资料如古月居的&#xff1a; 利用Websocket实现ROS与Web的交互 https:/…

Appilot发布:打造面向DevOps场景的开源AI助手

今日&#xff0c;数澈软件Seal &#xff08;以下简称“Seal”&#xff09;宣布推出面向 DevOps 场景的 AI 助手 Appilot&#xff0c;这款产品将充分利用 AI 大语言模型的能力为用户提供变革性的部署和应用管理体验。Seal 此次发布的 Appilot 项目&#xff0c;可以让用户直接输入…

使用 sklearn 进行数学建模的通用模板

前言 无论是本科和研究生都会有的数学建模含金量还是很高的&#xff0c;下面将介绍一下进行数学建模的一些基本操作方法&#xff0c;这里主要是利用sklearn 进行建模&#xff0c;包括前期的一些数据预处理以及一些常用的机器学习模型以及一些简单粗暴的通用建模步骤&#xff0…

论文阅读_大语言模型_Llama2

英文名称: Llama 2: Open Foundation and Fine-Tuned Chat Models 中文名称: Llama 2&#xff1a;开源的基础模型和微调的聊天模型 文章: http://arxiv.org/abs/2307.09288 代码: https://github.com/facebookresearch/llama 作者: Hugo Touvron 日期: 2023-07-19 引用次数: 11…

PHP8的类与对象的基本操作之成员变量-PHP8知识详解

成员变量是指在类中定义的变量。在类中可以声明多个变量&#xff0c;所以对象中可以存在多个成员变量&#xff0c;每个变量将存储不同的对象属性信息。 例如以下定义&#xff1a; public class Goods { 关键字 $name; //类的成员变量 }成员属性必须使用关键词进行修饰&#xf…

淘宝分布式文件存储系统(一) -TFS

淘宝分布式文件存储系统( 一 ) ->>TFS 目录 : 什么是文件系统文件存储的一些概念文件的结构系统读取文件的方式为什么采用大文件结构的原因 文件系统 : 将我们的数据整合成目录或者文件,提供对文件的存取接口,基于文件的权限进行访问,简单的说,文件系统就是对文件进行…

List<HashMap<String,String>>实现自定义字符串排序(key排序、Value排序)

系列文章目录 SpringBootVue3实现登录验证码功能 Java实现发送邮件&#xff08;定时自动发送邮件&#xff09; 换个角度使用Redis去解决跨域存取Session问题 Redis缓存穿透、击穿、雪崩问题及解决方法 Spring Cache的使用–快速上手篇 更多该系列文章请查看我的主页哦 文章目录…

Vue路由与nodejs环境搭建

目录 一、Vue路由 1.1 SPA简介 1.2 路由简介 1.3 路由实现思路 1.3.1 引入vue-router的js依赖 1.3.2 定义组件 1.3.3 定义路由 1.3.4 组装路由器 1.3.5 将路由挂载根实例 1.3.6 定义触发路由的按钮 1.3.7 定义锚点 1.4 示例 二、nodejs环境搭建 2.1 nodejs简介 2…