当前位置: 首页 > 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;或者第一次查询中存在的行在第二…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...