【Java】二维码生成工具

news2024/11/26 9:43:52

一、引入相关依赖

<!-- 引入Hutool工具库,简化Java开发,提高开发效率 -->
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.7.5</version>
</dependency>

<!-- 引入Google ZXing库,用于二维码和条形码的生成与解析 -->
<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>core</artifactId>
    <version>3.3.3</version>
</dependency>

二、关于Hutool

介绍

Hutool 是一个小而全的 Java 工具包,通过提供丰富的工具类库来简化 Java 开发。Hutool 包含了许多常用的功能,比如字符串处理、文件操作、日期时间处理、HTTP 请求、加密解密等,可以极大地提高开发效率。

官网

Hutool🍬一个功能丰富且易用的Java工具库,涵盖了字符串、数字、集合、编码、日期、文件、IO、加密、数据库JDBC、JSON、HTTP客户端等功能。icon-default.png?t=N7T8https://hutool.cn/

三、代码

○ 基础代码

public class BasicConfiguration {
    public static void main(String[] args) {
        // 调用 generate 方法生成二维码
        // 参数1:二维码的内容,这里是一个URL
        // 参数2:二维码的宽度
        // 参数3:二维码的高度
        // 参数4:二维码的保存路径及文件名
        QrCodeUtil.generate("https://www.csdn.net/", 1000,1000,new File("D:\\generateqr_code\\img\\qrcode.png"));
    }
}

○ 自定义生成

基本参数

public class CustomParameters {
    public static void main(String[] args) {
        // 创建二维码配置对象,指定二维码的宽度和高度为1000像素
        QrConfig config = new QrConfig(1000,1000);
        // 设置二维码的边距为3像素
        config.setMargin(3);
        // 设置二维码的前景色为蓝色
        config.setForeColor(Color.BLUE.getRGB());
        // 设置二维码的背景色为白色
        config.setBackColor(Color.WHITE.getRGB());

        // 生成二维码,参数分别为二维码的内容、配置对象以及二维码图片的保存路径
        QrCodeUtil.generate("https://www.csdn.net/", config, new File("D:\\generateqr_code\\img\\CustomParameters.png"));
    }
}

带图标

public class Icon {
    public static void main(String[] args) {
        // 创建二维码配置对象,指定二维码的宽度和高度为1000像素
        QrConfig config = new QrConfig(1000, 1000);
        // 设置二维码的边距为3像素
        config.setMargin(3);
        // 设置二维码的前景色为深蓝色
        config.setForeColor(new Color(30, 144, 255).getRGB()); // 深蓝色 (#1E90FF)
        // 设置二维码的背景色为白色
        config.setBackColor(Color.WHITE.getRGB());
        // 设置二维码中间的附带图标
        config.setImg("D:\\generateqr_code\\default.jpg");

        // 生成二维码到文件
        QrCodeUtil.generate(
                "https://www.csdn.net/", //二维码内容
                config, //二维码配置对象
                FileUtil.file("D:\\generateqr_code\\img\\Icon.png")//写出到的文件
        );
    }
}

○ 识别二维码

public class Identify {
    public static void main(String[] args) {
        // 从指定路径加载二维码图片,并解码
        String decode = QrCodeUtil.decode(FileUtil.file("D:\\generateqr_code\\img\\Icon.png"));
        // 输出解码结果
        System.out.println(decode);
    }
}

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

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

相关文章

LearnOpenGL之摄像机

前序 AndroidLearnOpenGL是本博主自己实现的LearnOpenGL练习集合&#xff1a; Github地址&#xff1a;https://github.com/wangyongyao1989/AndroidLearnOpenGL 系列文章&#xff1a; 1、LearnOpenGL之入门基础 2、LearnOpenGL之3D显示 3、LearnOpenGL之摄像机 4、LearnOpenG…

UNION ALL 在单个子查询中排序不生效问题

业务场景 有两张表&#xff1a;表A&#xff0c;和表B&#xff0c;需要对A中数据按排序字段排序&#xff0c;对B表也按排序字段排序&#xff0c;然后返回并集。 写出如下SQL&#xff08;已简化&#xff09;&#xff1a; (select id from A order by sort desc) union all (se…

《python语言程序设计》2018年版第6章31题调用time.time()返回从1970年1月1日0点开始显示当前日期和时间

我没按要求显示结果。但是内容差不都&#xff0c;关键。每个31日或者月底就时间出现偏差 # 之前已经做好的当前的小时、分、秒。 def currentTime_output():currentTime time.time()totalSeconds int(currentTime)currentSecond totalSeconds % 60totalMinutes totalSecon…

正点原子imx6ull-mini-Linux驱动之Linux USB 驱动实验

USB 是很常用的接口&#xff0c;目前大多数的设备都是 USB 接口的&#xff0c;比如鼠标、键盘、USB 摄像 头等&#xff0c;我们在实际开发中也常常遇到 USB 接口的设备&#xff0c;本章我们就来学习一下如何使能 Linux 内核自带的 USB 驱动。注意&#xff01;本章并不讲解具体的…

本阿弗莱克和詹妮弗洛佩兹两次婚恋的完整时间表 每次都轰轰烈烈也都无疾而终

本阿弗莱克和詹妮弗洛佩兹于 2002 年在《鸳鸯绑匪》片场首次相识&#xff0c;当时洛佩兹与她的第二任丈夫克里斯贾德于 2001 年 9 月结婚。当时&#xff0c;阿弗莱克与格温妮丝帕特洛分分合合。洛佩兹提出离婚&#xff0c;不久后与阿弗莱克首次亮相情侣档。 2002 年 11 月&…

JavaEE: 死锁问题详解(5000字)

文章目录 死锁的出现场景1. 一个线程一把锁,这个线程针对这把锁,连续加锁了两次2. 两个线程,两把锁3. N个线程 , M个锁4. 内存可见性为什么会出现内存可见性问题呢?解决方法 volatile关键字 总结synchronized:死锁的四个必要条件(缺一不可)[重点]:内存可见性问题: 死锁的出现场…

【iOS】暑假第二周——网易云APP 仿写

目录 前言首页关于UINavigationBarAppearance “我的”账号夜间模式——多界面传值遇到的问题所用到的其他知识整理NSNotificationreloadData各种键盘模式 总结 前言 有了之前仿写ZARA的基础&#xff0c;本周我们仿写了网易云APP&#xff0c;在这里对多界面传值进行了首次应用—…

LISA: Reasoning Segmentation via Large Language Model

发表时间&#xff1a;CVPR 2024 论文链接&#xff1a;https://openaccess.thecvf.com/content/CVPR2024/papers/Lai_LISA_Reasoning_Segmentation_via_Large_Language_Model_CVPR_2024_paper.pdf 作者单位&#xff1a;CUHK Motivation&#xff1a;尽管感知系统近年来取得了显…

基于SSH的医院在线挂号系统设计与实现

点击下载源码 基于SSH的医院在线挂号系统设计与实现 摘 要 互联网技术迅速的发展给我们的生活带来很大的方便&#xff0c;同时也让许多行业迅速的发展起来。互联网技术已走向科技发展的巅峰期&#xff0c;我们要做的就是合理的使用互联网技术让我们的各个行业得到更快速的发展…

2024杭电多校06——1005交通管控

补题点这里 大意 一个操作杆可以对k个红绿灯进行操作&#xff0c;操作杆上的一个字符对应一个红绿灯&#xff0c;操作包括,-,0,问每种组合方案有多少种组合方式 : red->green->yellow->red -:green->red->yellow->green 可以用一个三进制数表示每个灯的状态…

Python(模块---pandas+matplotlib+pyecharts)

import pandas as pd import matplotlib.pyplot as plt dfpd.read_excel(简易数据.xlsx) # print(df) plt.rcParams[font.sans-serif][SimHei] #设置画布的大小 plt.figure(figsize(10,6)) labelsdf[电影中文名] ydf[国籍] # print(labels) # print(y)# import pandas as pd im…

[Webpack]webpack-dev-server设置多个路径代理时,proxy顺序有要求

问题背景 前端需要调用多个不同的后台时需要使用devServer.proxy做代理 问题现象 如下图设置ETL相关接口路径代理之后 调用ETL后台接口时产生404报错 问题原因 devServer.proxy在解析代理路径并替换的时候是按顺序解析的&#xff0c;我配置的三个代理中&#xff0c;/csm…

NCL数据分析与处理实践技术

NCAR Command Language&#xff08;NCL&#xff09;是由美国大气研究中心&#xff08;NCAR&#xff09;推出的一款用于科学数据计算和可视化的免费软件。它有着非常强大的文件输入和输出功能&#xff0c;可读写netCDF-3、netCDF-4 classic、HDF4、binary、ASCII数据&#xff0c…

Linux之软硬链接和动静态库

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言进阶 数据结构初阶 Linux C初阶 算法 C进阶 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力&#xff0c;一起奔赴大厂 目录 一.软硬链接 1.1如何软硬链接 1.2软硬链接的作用 …

ViP-LLaVA: Making Large Multimodal Models Understand Arbitrary Visual Prompts

发表时间&#xff1a;cvpr2024 论文链接&#xff1a;https://readpaper.com/pdf-annotate/note?pdfId2357936887983293952&noteId2426262228488986112 作者单位&#xff1a;University of Wisconsin–Madison Motivation&#xff1a;现在的多模态模型都关注整张图像的理…

html+css网页设计 qq官网首页1个页面无js

htmlcss网页设计 qq官网首页1个页面无js功能 页面1:1还原 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 …

冲击性信号的频域特征

这是一个信号采样数学实验&#xff0c;你可以直观感受到冲击信号的时域和频域特征 1.原始冲击信号&#xff1a; 原始信号是一个频率为180Hz附近的一个冲击性信号&#xff1a; 2.冲击信号频谱 它的频谱&#xff0c;可能会超出你的想象&#xff0c;它的1x频率幅度可能并不最高…

iOS ------ autoreleasePool

一&#xff0c;autoReleasePool{} int main(int argc, const char * argv[]) {autoreleasepool {}return 0; }我们平时创建一个main函数的代码的时候&#xff0c;就会发现其中有一个这个东西autoreleasepool{}&#xff0c;使用clang编译之后&#xff1a;autoreleasepool{…}被…

对《国家汽车芯片标准体系建设指南》好奇,遂读

基础通用&#xff1a;基于汽车行业对芯片的可靠性、运行稳定性 和安全性等应用需求&#xff0c;提取出汽车芯片性通用要求&#xff0c;主要包括环境及可靠性、电磁兼容、功能安全和信息安全共4个方面的要求。 产品与技术应用&#xff1a;根据实现功能的不同&#xff0c;将汽车…

文献综述能否帮助研究人员认识特定学术领域的趋势和新兴主题

VersaBot一键生成文献综述 进行良好的文献综述可以成为研究人员识别特定学术领域的趋势和新兴主题的强大工具。就是这样; 1. 识别模式和重复出现的概念&#xff1a; 当您深入研究现有研究时&#xff0c;您自然会开始注意到不同研究中采用的重复出现的主题、想法和方法。这些模…