当前位置: 首页 > news >正文

Hutool工具类生成二维码

1、引入依赖
 

		<dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.3.3</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency>

2、编写controller

1、带头像的二维码
 

    //浏览器直接显示二维码图片@GetMapping("/download3")public void download3(HttpServletResponse response) throws Exception {QrConfig config = new QrConfig(600, 600);// 设置边距,既二维码和背景之间的边距config.setMargin(1);// 设置前景色,二维码颜色(绿色)config.setForeColor(new Color(0, 139, 69));// 设置背景色(淡黄色)config.setBackColor(new Color(255, 255, 224));// 设置中间的 logo 图片String logoPath = ResourceUtils.getFile("classpath:logo/1.jpg").getPath();config.setImg(logoPath);// 设置容错级别config.setErrorCorrection(ErrorCorrectionLevel.H);byte[] pngArr = QrCodeUtil.generatePng("http://www.baidu.com", config);response.setContentType("image/png");response.getOutputStream().write(pngArr, 0, pngArr.length);}

2、带文字的二维码

    //浏览器直接显示二维码图片@GetMapping("/download3")public void download3(HttpServletResponse response) throws Exception {// 创建 QR 配置QrConfig config = new QrConfig(400, 400);config.setMargin(1);config.setForeColor(new Color(0, 139, 69));config.setBackColor(new Color(255, 255, 224));config.setErrorCorrection(ErrorCorrectionLevel.H);// 生成二维码图像BufferedImage qrImage = QrCodeUtil.generate("http://www.baidu.com", config);// 在二维码上绘制文本Graphics2D g2d = qrImage.createGraphics();g2d.setFont(new Font("微软雅黑", Font.PLAIN, 40));g2d.setColor(new Color(255, 140, 0));// 计算文本的宽高,确保居中FontMetrics metrics = g2d.getFontMetrics();int textWidth = metrics.stringWidth("张三李四王五张三李四王五");int textHeight = metrics.getHeight();// 绘制文本g2d.drawString("张三李四王五张三李四王五", (qrImage.getWidth() - textWidth) / 2, (qrImage.getHeight() + textHeight) / 2);g2d.dispose();// 输出二维码图片到响应response.setContentType("image/png");OutputStream os = response.getOutputStream();ImageIO.write(qrImage, "PNG", os);}

1、效果

http://www.lryc.cn/news/489565.html

相关文章:

  • wpf 事件转命令的方式
  • 第二十八章 TCP 客户端 服务器通信 - JOB命令示例
  • 「Mac玩转仓颉内测版19」PTA刷题篇10 - L1-010 比较大小
  • C++趣味编程玩转物联网:用树莓派Pico实现一位数码管动态显示
  • SPA 单页面深入解读:优劣势剖析及实现方法
  • 机器学习系列----关联分析
  • json数据四大加载方式
  • JavaScript 中的数组(Array)对象的内置方法
  • 网络安全之国际主流网络安全架构模型
  • 电子应用设计方案-16:智能闹钟系统方案设计
  • 【FRP 内网穿透 从0到1 那些注意事项】
  • 力扣 LRU缓存-146
  • Elasticsearch简介与实操
  • 用python将一个扫描pdf文件改成二值图片组成的pdf文件
  • Failed to start Docker Application Container Engine
  • ESLint的简单使用(js,ts,vue)
  • 实景三维赋能国土空间智慧治理
  • 树链剖分(重链剖分)
  • 幻读是什么?用什么隔离级别可以防止幻读?
  • [Unity Demo]从零开始制作空洞骑士Hollow Knight第二十集:制作专门渲染HUD的相机HUD Camera和画布HUD Canvas
  • 智能安全配电装置在高校实验室中的应用
  • 网络安全等级保护测评机构管理办法(全文)
  • Flutter:shared_preferences数据存储,数据持久化,token等信息存储
  • FileProvider高版本使用,跨进程传输文件
  • python学习记录18
  • 云原生之k8s服务管理
  • redis工程实战介绍(含面试题)
  • 再次讨论下孤注一掷
  • LeetCode46.全排列
  • 蓝桥杯-洛谷刷题-day4(C++)