Profile

陌末17252

这家伙很懒,什么也没写
资源:5 粉丝:0

陌末17252上传的资源

Java后端实现随机验证码图片生成
/** * 生成随机验证码图片 */ @RestController public class CaptchaController { /** * 生成随机验证码 */ @RequestMapping("/captcha") public void generateCaptcha(HttpServletRequest request, HttpServletResponse response) throws IOException { // 设置响应头信息 response.setContentType("image/png"); response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); // 验证码图片的宽度和高度 int width = 100; int height = 36; // 创建 BufferedImage 对象,设置图片大小和类型 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 获取 Graphics2D 对象,绘制图片 Graphics2D g = image.createGraphics(); // 生成随机数,作为验证码 String captcha = generateRandomString(); request.getSession().setAttribute("captcha", captcha); // 设置字体、字号和颜色 Font font = new Font("Arial", Font.PLAIN, 20); g.setFont(font); g.setColor(Color.BLACK); // 绘制验证码 g.drawString(captcha, 20, 25); // 添加干扰线和噪点 addInterference(g, width, height); // 输出图片 ImageIO.write(image, "png", response.getOutputStream()); } /** * 生成随机字符串 */ private String generateRandomString() { String base = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789"; Random random = new Random(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < 4; i++) { int number = random.nextInt(base.length()); sb.append(base.charAt(number)); } return sb.toString(); } /** * 添加干扰线和噪点 */ private void addInterference(Graphics2D g, int width, int height) { Random random = new Random(); // 添加干扰线 for (int i = 0; i < 3; i++) { int x1 = random.nextInt(width); int y1 = random.nextInt(height); int x2 = random.nextInt(width); int y2 = random.nextInt(height); g.setColor(new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256))); g.drawLine(x1, y1, x2, y2); } // 添加噪点 for (int i = 0; i < 30; i++) { int x = random.nextInt(width); int y = random.nextInt(height); g.setColor(new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256))); g.fillRect(x, y, 1, 1); } } }
java
2.67KB
2023-03-07 13:43
基于雪花算法的ID生成器
基于雪花算法的ID生成器有时间顺序总共8字节long型索引空间占用小.对于需要时间检索的数据可以节约时间索引
java
3.15KB
2023-02-08 05:32
golang基础入门
go入门讲解,包括数据类型,io,并发,通道,json等的基础讲解
PDF
1.36MB
2019-07-06 09:23
docker搭建gitlab
此文档详细介绍了使用docker搭建私有gitlab的步骤,使用十分方便
DOCX
11.68KB
2019-03-04 11:05
elasticsearch指南
此文档是elasticsearch入门级指南,包括搭建和基本的crud操作
PDF
2.29MB
2019-02-27 22:49
暂无更多数据