当前位置: 首页 > 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、效果

相关文章:

Hutool工具类生成二维码

1、引入依赖 <dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.3.3</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutoo…...

wpf 事件转命令的方式

1&#xff0c;方式1 <StackPanel Background"Transparent"><StackPanel.InputBindings><KeyBinding Command"{Binding ChangeColorCommand}"CommandParameter"{Binding ElementNamecolorPicker, PathSelectedItem}"Key"{Bi…...

第二十八章 TCP 客户端 服务器通信 - JOB命令示例

文章目录 第二十八章 TCP 客户端 服务器通信 - JOB命令示例JOB命令示例 第二十八章 TCP 客户端 服务器通信 - JOB命令示例 JOB命令示例 以下示例显示了一个非常简单的并发服务器&#xff0c;只要它检测到来自客户端的连接&#xff0c;就会产生一个子作业。 JOB指定一个并发服…...

「Mac玩转仓颉内测版19」PTA刷题篇10 - L1-010 比较大小

本篇将继续讲解PTA平台上的题目 L1-010 比较大小&#xff0c;通过对三个整数的排序&#xff0c;进一步提升Cangjie编程语言的数组操作与逻辑处理能力。 关键词 PTA刷题数字排序条件判断Cangjie语言 一、L1-010 比较大小 题目描述&#xff1a;给定3个整数&#xff0c;要求将它…...

C++趣味编程玩转物联网:用树莓派Pico实现一位数码管动态显示

七段数码管是一种经典的电子显示器件&#xff0c;广泛应用于数字时钟、电子仪表等设备。本文将通过树莓派Pico开发板&#xff0c;介绍如何用C代码控制一位七段数码管显示数字。作为一个嵌入式开发项目&#xff0c;这不仅是初学者理解数码管工作原理的好机会&#xff0c;也是C开…...

SPA 单页面深入解读:优劣势剖析及实现方法

SPA(Single Page Application)单页面应用 什么是 SPA? SPA(Single Page Application,单页面应用)是一种 Web 应用程序,它通过 JavaScript 动态更新单一页面上的内容,而不是像传统的多页面应用程序那样每次用户与应用交互时都请求一个新的 HTML 页面。通过使用 AJAX 请…...

机器学习系列----关联分析

目录 1. 关联分析的基本概念 1.1定义 1.2常用算法 2.Apriori 算法的实现 2.1 工作原理 2.2 算法步骤 2.3 优缺点 2.4 时间复杂度 2.5实际运用----市场购物篮分析 3. FP-Growth 算法 3.1 工作原理 3.2 算法步骤 3.3 优缺点 3.4 时间复杂度 3.5实际运用——网页点…...

json数据四大加载方式

效果&#xff1a; 一、使用 import 静态加载 JSON 原理 使用 ES 模块的 import 语法直接引入 JSON 文件。Webpack/Vite 等构建工具会将 JSON 文件解析成 JavaScript 对象。 优点 简单直接&#xff0c;适合静态数据。不需要额外的网络请求。数据会随着打包文件一起部署。 缺点 J…...

JavaScript 中的数组(Array)对象的内置方法

JavaScript 中的数组&#xff08;Array&#xff09;对象提供了许多内置方法&#xff0c;用于对数组进行创建、操作、遍历和搜索等操作。以下是一些常用的数组方法及其简要说明&#xff1a; 创建和初始化数组 Array(): 创建一个新的空数组&#xff0c;或者根据提供的参数创建一…...

网络安全之国际主流网络安全架构模型

目前&#xff0c;国际主流的网络安全架构模型主要有&#xff1a; ● 信息技术咨询公司Gartner的ASA&#xff08;Adaptive Security Architecture自适应安全架构&#xff09; ● 美国政府资助的非营利研究机构MITRE的ATT&CK&#xff08;Adversarial Tactics Techniques &…...

电子应用设计方案-16:智能闹钟系统方案设计

智能闹钟系统方案设计 一、系统概述 本智能闹钟系统旨在为用户提供更加个性化、智能化和便捷的闹钟服务&#xff0c;帮助用户更有效地管理时间和起床。 二、系统组成 1. 微控制器 - 选用低功耗、高性能的微控制器&#xff0c;如 STM32 系列&#xff0c;负责整个系统的控制和数据…...

【FRP 内网穿透 从0到1 那些注意事项】

【摘要】 最近跟第三方团队调试问题&#xff0c;遇到一个比较烦的操作。就是&#xff0c;你必须要发个版到公网环境&#xff0c;他们才能链接到你的接口地址&#xff0c;才能进行调试。按理说&#xff0c;也没啥&#xff0c;就是费点时间。但是&#xff0c;在调试的时候&#…...

力扣 LRU缓存-146

LRU缓存-146 /* 定义双向链表节点&#xff0c;用于存储缓存中的每个键值对。 成员变量&#xff1a;key和value存储键值对。preb和next指向前一个和后一个节点&#xff0c;形成双向链表。 构造函数&#xff1a;默认构造函数&#xff1a;初始化空节点。参数化构造函数&#xff1…...

Elasticsearch简介与实操

Elasticsearch是一个分布式、高扩展、高实时的搜索与数据分析引擎。以下是对Elasticsearch的详细介绍&#xff1a; 一、基本概述 Elasticsearch是Elastic Stack&#xff08;以前称为ELK Stack&#xff09;的核心组件&#xff0c;Logstash和Beats有助于收集、聚合和丰富数据并将…...

用python将一个扫描pdf文件改成二值图片组成的pdf文件

使用墨水屏读书现在似乎越来越流行&#xff0c;这确实有一定的好处&#xff0c;例如基本不发热&#xff0c;电池续航时间超长&#xff0c;基本不能游戏所以有利于沉浸式阅读&#xff0c;还有不知道是不是真的有用的所谓防蓝光伤害。但是&#xff0c;如果阅读的书籍是扫描图片组…...

Failed to start Docker Application Container Engine

说明&#xff1a; 1&#xff09;访问应用业务&#xff0c;读取不到数据&#xff0c;show databases;查看数据库报错 2&#xff09;重启docker服务&#xff0c;服务启动失败&#xff0c;查看日志报错如下图所示 3&#xff09;报错信息&#xff1a;chmod /data/docker: read-only…...

ESLint的简单使用(js,ts,vue)

一、ESLint介绍 1.为什么要用ESLint 统一团队编码规范&#xff08;命名&#xff0c;格式等&#xff09; 统一语法 减少git不必要的提交 减少低级错误 在编译时检查语法&#xff0c;而不是等js引擎运行时才检查 2.eslint用法 可以手动下载配置 可以通过vue脚手架创建项…...

实景三维赋能国土空间智慧治理

随着城市化进程的不断推进&#xff0c;国土空间的合理规划与高效管理成为政府面临的一项重大挑战。在这个过程中&#xff0c;实景三维技术作为一种新兴的信息技术手段&#xff0c;正在逐渐改变传统国土空间治理的方式&#xff0c;为智慧城市的建设提供了新的可能。本文旨在探讨…...

树链剖分(重链剖分)

树链剖分的核心思想就是将一棵树剖分成一条一条的链 因为树不好处理 但链比较好处理 为了学会它 我们先要学会树上dfs&#xff08;深度优先搜索&#xff09; 然后就没了&#xff08;雾&#xff09; Because 树链剖分需要用到两个dfs 哦对了 我们还要了解以下的知识点 1.子…...

幻读是什么?用什么隔离级别可以防止幻读?

幻读是什么&#xff1f; 幻读&#xff08;Phantom Read&#xff09; 是数据库事务中的一种现象&#xff0c;指的是在一个事务中&#xff0c;当执行两次相同的查询时&#xff0c;第二次查询返回的结果集包含了第一次查询中不存在的行&#xff0c;或者第一次查询中存在的行在第二…...

手把手教程:快速设置远程开机,看完就会

今天就给大家带来一份完整、可直接照着操作的远程开机教程&#xff0c;即可实现无需公网 IP、一键远程唤醒&#xff0c;随时随地让设备为你待命。设备支持检查确认主板支持WAKE-ON-LAN&#xff08;网络唤醒&#xff09;功能&#xff0c;局域网内需具备两台设备&#xff1a;目标…...

计算机毕业设计:Python中国地铁网络智能分析系统 Flask框架 数据分析 可视化 高德地图 数据挖掘 机器学习 爬虫(建议收藏)✅

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ > &#x1f345;想要获取完整文章或者源码&#xff0c;或者代做&#xff0c;拉到文章底部即可与…...

LeaguePrank:英雄联盟客户端个性化引擎完全指南

LeaguePrank&#xff1a;英雄联盟客户端个性化引擎完全指南 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank 1. 价值定位&#xff1a;重新定义游戏界面体验 1.1 产品核心价值 LeaguePrank作为开源的英雄联盟客户端个性化引擎…...

50 岁苹果:变与不变的科技传奇

从车库小作坊到行业巨头&#xff1a;苹果早期的革命之路1976 年&#xff0c;在科技巨头普遍认为电脑仅供企业和政府使用时&#xff0c;乔布斯和沃兹尼亚克在车库用零件组装出 Apple I&#xff0c;虽像半成品却为苹果拿到启动资金。次年的 Apple II 才是关键&#xff0c;它是第一…...

封不住!Claude Code爆改Python版加冕最快10万星,且clone且珍惜

Jay 发自 凹非寺量子位 | 公众号 QbitAI还活着&#xff01;两天过去&#xff0c;Claude Code源码克隆项目不仅健在&#xff0c;还成了史上最快10万星项目。太恐怖了&#xff0c;揽星速度比之前的OpenClaw还要猛&#xff0c;火到连作者的妈妈都出来喊话&#xff0c;催他赶紧去申…...

暗黑3效率革命:D3keyHelper全流程自动化实战指南

暗黑3效率革命&#xff1a;D3keyHelper全流程自动化实战指南 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面&#xff0c;可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper D3keyHelper是一款基于AutoHotkey&#…...

收藏!小白也能看懂RAG,让大模型拥有外部知识库的翅膀

当大模型遇到"不知道"的问题&#xff0c;RAG 让它拥有了外部知识的翅膀。大型语言模型&#xff08;LLM&#xff09;虽然知识渊博&#xff0c;但存在两个致命短板&#xff1a;知识截止和幻觉问题。模型训练完成后&#xff0c;新发生的事情它一无所知&#xff1b;被问到…...

绿联 安装SeaTable在线协同表格

绿联 安装SeaTable在线协同表格 1、镜像 seatable/seatable-developer:latest 2、安装 2.1、基础设置 重启策略&#xff1a;容器退出时总是重启容器。 2.2、网络 网络选择桥接(bridge)。 2.3、存储空间 装载路径/shared不可变更。 2.4、端口设置 容器端口固定80&#x…...

掌握N_m3u8DL-CLI-SimpleG:高效流媒体下载工具全攻略

掌握N_m3u8DL-CLI-SimpleG&#xff1a;高效流媒体下载工具全攻略 【免费下载链接】N_m3u8DL-CLI-SimpleG N_m3u8DL-CLIs simple GUI 项目地址: https://gitcode.com/gh_mirrors/nm3/N_m3u8DL-CLI-SimpleG 在数字化时代&#xff0c;视频内容已成为信息传播的重要载体&…...

暗黑3一键宏终极指南:D3keyHelper让你的刷图效率翻倍

暗黑3一键宏终极指南&#xff1a;D3keyHelper让你的刷图效率翻倍 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面&#xff0c;可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 还在为暗黑3中重复的技能按键感到疲…...