Java生成二维码——附Utils工具类

news2025/1/16 15:04:48

参加2023年的计算机设计大赛国赛,拿到了一等奖。
现在将项目中的工具类代码剥离出来,方便之后项目开发中复用。

实现效果:

在这里插入图片描述

代码实现:

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import org.springframework.util.FastByteArrayOutputStream;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.util.Base64;
import java.util.HashMap;

/**
 * @Author: KMHRKFC
 * @Date: 2022/7/11 20:44
 */
public class QRCodeUtils {

    private static int width = 600;
    private static int height = 600;
    private static String format = "png";
    private static HashMap hints;

    static {
        hints = new HashMap();
        hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");   // 设置字符集, utf-8
        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);     // 设置容错率
        hints.put(EncodeHintType.MARGIN, 1);                // 设置边距空白宽度为1
    }

    public static String str2QRCode(String content) {
        FastByteArrayOutputStream os = null;
        try {
            BitMatrix bitMatrix = new MultiFormatWriter()
                    .encode(content, BarcodeFormat.QR_CODE, width, height, hints);
            BufferedImage image = MatrixToImageWriter.toBufferedImage(bitMatrix);
            os = new FastByteArrayOutputStream();
            ImageIO.write(image, format, os);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "data:image/png;base64," + Base64.getEncoder().encodeToString(os.toByteArray());
    }
}

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

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

相关文章

挑战双面侧柱碰试验:比亚迪CTB保障高品质出行

对于用户来说,选择汽车时最应该重视的要素是什么? 第一,是安全;第二,是安全;第三,还是安全! 那么作为新能源汽车的代表,比亚迪在保障驾乘人员的安全方面又是怎样做的呢&a…

基于SpringCloud+Vue的分布式架构网上商城系统设计与实现(源码+LW+部署文档等)

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

FPGA实现NIC 10G UDP协议栈网卡,纯verilog代码编写,提供工程源码和技术支持

目录 1、前言2、我这里已有的UDP方案3、10G网卡基本性能简介4、详细设计方案接口概述PCIe HIPDMA IFAXI总线接口时钟同步处理TXQ和RXQ队列TXCQ和RXCQ队列完成EQ MAC PHY流水线队列管理发送调度程序端口和接口数据路径以及发送和接收引擎分段内存接口 5、vivado工程详解6、上板…

国内 github.com经常打不开的解决办法

1、打开网站http://tool.chinaz.com/dns/ 2、在A类型中填写github.com,再点击监测按钮 3、复制下面任意一个ip 4、打开电脑文件C:\Windows\System32\drivers\etc下的host文件 5、在host文件的最后一刚加入刚才复制的IP 6、重新打开GitHub

对外接口签名生成方式

接口签名生成方式 前言 当某个系统对外部系统提供接口访问时,为提高接口请求安全性,往往会在接口访问时添加签名,当外部系统访问本系统签名验证成功时才能正常返回数据,一般接口提供方会与外部系统提前约定好,不同外…

六天入门PyTorch深度学习(1/6)

六天带你入门PyTorch深度学习(1/6) 之PyTorch初认识 Pytorch深度学习快速入门简易教程,适合所有新手学习打好框架基础 跟着我的节奏一步一步学,一周即可掌握 跟着我的节奏一步一步学,一周即可掌握 import torch #导入torch库&#xff0c…

django4.2 day1Django快速入门

1、创建虚拟环境 打开cmd安装virtualenv pip install virtualenvwrapper-winworkon 查看虚拟环境mkvirtualenv 创建新的虚拟环境删除虚拟环境 rmvirtualenv 进入虚拟环境 workon env 2、创建django虚拟环境并安装django 创建虚拟环境mkvirtualenv django4env进入虚拟环境安…

Mycat-Balance使用指南

MyCAT Balance是一个Java NIO的高性能负载均衡器,可以替代普通的硬件的交换机或其LVS类似的复杂机制,实现MyCAT集群的负载均衡。 MyCAT Balance的配置文件在conf目录下,frontend-conf.为前端配置,包括绑定的端口等,js…

牛客网Verilog刷题——VL45

牛客网Verilog刷题——VL45 题目解析答案 题目 请根据题目中给出的双口RAM代码和接口描述,实现异步FIFO,要求FIFO位宽和深度参数化可配置。电路的接口如下图所示。 双口RAM端口说明: 异步FIFO端口说明: 双口RAM代码如下&#xff0…

第七章 HL7 架构和可用工具 - 使用 HL7 消息查看器页面

文章目录 第七章 HL7 架构和可用工具 - 使用 HL7 消息查看器页面使用 HL7 消息查看器页面选择选项解析消息 第七章 HL7 架构和可用工具 - 使用 HL7 消息查看器页面 使用 HL7 消息查看器页面 为 HL7 提供了消息查看器页面。可以使用此页面显示、转换和导出 HL7 消息&#xff0…

【力扣每日一题】2023.7.31 重排链表

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 给我们一个链表,让我们按照题目要求原地修改重排链表。 那么具体怎么个重排法呢,题目给出了一串式子,其实就是把链表分为前后两段,然后在前半段的节…

【UDS诊断】:学习记录

学习记录 诊断分层诊断命令诊断理解UDS的寻址模式UDS的服务类型 参考文件 诊断分层 (上述图片来源于:ISO 14229-1-2013) UDS包含了ISO 14229下属的7个子协议 诊断命令 UDS的请求命令有4种构成方式: SIDSIDSF(Sub-fu…

开源项目audioFlux: 针对音频领域的深度学习工具库

audioFlux是一个Python和C实现的库,提供音频领域系统、全面、多维度的特征提取与组合,结合各种深度学习网络模型,进行音频领域的业务研发,下面从时频变换、频谱重排、倒谱系数、解卷积、谱特征、音乐信息检索六个方面简单阐述其相…

当 Spark 任务出现数据倾斜的问题时该如何处理呢?

前言 最近一位数仓同学问我,当 Spark 任务出现数据倾斜的问题时该如何处理呢?那么今天就来讲一下遇到了数据倾斜问题时处理的方式方法。 1)数据倾斜的定义 Spark 中的数据倾斜问题主要指 shuffle 过程中出现的数据倾斜问题,是由于不同的 key 对应的数据量不同导致的不同t…

【计算机视觉 | 目标检测 | 图像分割】arxiv 计算机视觉关于目标检测和图像分割的学术速递(7 月 27 日论文合集)

文章目录 一、检测相关(6篇)1.1 Memory-Efficient Graph Convolutional Networks for Object Classification and Detection with Event Cameras1.2 PNT-Edge: Towards Robust Edge Detection with Noisy Labels by Learning Pixel-level Noise Transitions1.3 Controllable Gu…

C/C++程序的翻译与执行

🚀write in front🚀 📜所属专栏:> c语言学习 🛰️博客主页:睿睿的博客主页 🛰️代码仓库:🎉VS2022_C语言仓库 🎡您的点赞、关注、收藏、评论,是…

(4)将固件加载到已有ArduPilot固件的主板上

文章目录 前言 4.1 将自动驾驶仪连接到电脑 4.2 选择COM端口 4.3 安装固件 4.4 使用测试版和开发版 前言 这些说明将告诉你如何将最新的固件下载到已经安装了 ArduPilot 固件的自动驾驶仪硬件上。这个过程将使用 Mission Planner 地面控制站。请参阅将固件加载到没有 Ard…

AttributeError: ‘DataFrame‘ object has no attribute ‘iteritems‘解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

Vue3+Vue2表单点击加号实现多选效果(以逗号分割传递后端参数,及数据回显处理)

示图如下: 一、Vue3举例 嵌套在form表单,利用elment-ui行布局,将输入表单填充至内容区域<el-row type="flex" v-for="(domain, index) in dataForm.dataValue" :key&#