Hutool Hutool
(opens new window)
🏡首页
📖指南
  • 核心(Hutool-core)
  • 配置文件(Hutool-setting)
  • 日志(Hutool-log)
  • 缓存(Hutool-cache)
  • JSON(Hutool-json)
  • 加密解密(Hutool-crypto)
  • DFA查找(Hutool-dfa)
  • 数据库(Hutool-db)
  • HTTP客户端(Hutool-http)
  • 定时任务(Hutool-cron)
  • 扩展(Hutool-extra)
  • 布隆过滤(Hutool-bloomFilter)
  • 切面(Hutool-aop)
  • 脚本(Hutool-script)
  • Office文档操作(Hutool-poi)
  • 系统调用(Hutool-system)
  • 图形验证码(Hutool-captcha)
  • 网络Socket(Hutool-socket)
  • JWT(Hutool-jwt)
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
(opens new window)
🏡首页
📖指南
  • 核心(Hutool-core)
  • 配置文件(Hutool-setting)
  • 日志(Hutool-log)
  • 缓存(Hutool-cache)
  • JSON(Hutool-json)
  • 加密解密(Hutool-crypto)
  • DFA查找(Hutool-dfa)
  • 数据库(Hutool-db)
  • HTTP客户端(Hutool-http)
  • 定时任务(Hutool-cron)
  • 扩展(Hutool-extra)
  • 布隆过滤(Hutool-bloomFilter)
  • 切面(Hutool-aop)
  • 脚本(Hutool-script)
  • Office文档操作(Hutool-poi)
  • 系统调用(Hutool-system)
  • 图形验证码(Hutool-captcha)
  • 网络Socket(Hutool-socket)
  • JWT(Hutool-jwt)
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
  • 快速入门

  • 核心(Hutool-core)

  • 配置文件(Hutool-setting)

  • 日志(Hutool-log)

  • 缓存(Hutool-cache)

  • JSON(Hutool-json)

  • 加密解密(Hutool-crypto)

  • DFA查找(Hutool-dfa)

  • 数据库(Hutool-db)

  • HTTP客户端(Hutool-http)

  • 定时任务(Hutool-cron)

  • 扩展(Hutool-extra)

    • 概述
    • Servlet工具-ServletUtil
    • 二维码工具-QrCodeUtil
      • 由来
      • 使用
        • 引入zxing
        • 生成二维码
        • 自定义参数(since 4.1.2)
        • 识别二维码
        • 生成SVG矢量图二维码(since 5.8.6)
        • 生成Ascii Art字符画二维码(sincec 5.8.6)
    • 邮件工具-MailUtil
    • cglib

    • emoji

    • FTP

    • Jsch封装

    • Spring

    • 中文分词

    • 压缩

    • 拼音

    • 表达式引擎

    • 模板引擎

  • 布隆过滤(Hutool-bloomFilter)

  • 切面(Hutool-aop)

  • 脚本(Hutool-script)

  • Office文档操作(Hutool-poi)

  • 系统调用(Hutool-system)

  • 图形验证码(Hutool-captcha)

  • 网络Socket(Hutool-socket)

  • JWT(Hutool-jwt)

  • 指南
  • 扩展(Hutool-extra)
Hutool
2023-03-28
目录

二维码工具-QrCodeUtil

特别赞助 by:

# 由来

由于大家对二维码的需求较多,对于二维码的生成和解析我认为应该作为简单的工具存在于Hutool中。考虑到自行实现的难度,因此Hutool针对被广泛接受的zxing (opens new window)库进行封装。而由于涉及第三方包,因此归类到extra模块中。

# 使用

# 引入zxing

考虑到Hutool的非强制依赖性,因此zxing需要用户自行引入:

<dependency>
	<groupId>com.google.zxing</groupId>
	<artifactId>core</artifactId>
	<version>${zxing.version}</version>
</dependency>

说明 zxing-3.5.1是此文档编写时的最新版本,理论上你引入的版本应与此版本一致或比这个版本新。

# 生成二维码

在此我们将Hutool主页的url生成为二维码,微信扫一扫可以看到H5主页哦:

// 生成指定url对应的二维码到文件,宽和高都是300像素
QrCodeUtil.generate("https://hutool.cn/", 300, 300, FileUtil.file("d:/qrcode.jpg"));

效果qrcode.jpg:

qrcode.jpg

# 自定义参数(since 4.1.2)

  1. 基本参数设定

通过QrConfig可以自定义二维码的生成参数,例如长、宽、二维码的颜色、背景颜色、边距等参数,使用方法如下:

QrConfig config = new QrConfig(300, 300);
// 设置边距,即二维码和背景之间的边距
config.setMargin(3);
// 设置前景色,即二维码颜色(青色)
config.setForeColor(Color.CYAN.getRGB());
// 设置背景色(灰色)
config.setBackColor(Color.GRAY.getRGB());

// 生成二维码到文件,也可以到流
QrCodeUtil.generate("http://hutool.cn/", config, FileUtil.file("e:/qrcode.jpg"));

效果qrcode.jpg:

qrcodeCustom.jpg

  1. 附带logo小图标
QrCodeUtil.generate(//
	"http://hutool.cn/", //二维码内容
	QrConfig.create().setImg("e:/logo_small.jpg"), //附带logo
	FileUtil.file("e:/qrcodeWithLogo.jpg")//写出到的文件
);

效果如图:

qrcodeWithLogo.jpg

  1. 调整纠错级别

很多时候,二维码无法识别,这时就要调整纠错级别。纠错级别使用zxing的ErrorCorrectionLevel枚举封装,包括:L、M、Q、H几个参数,由低到高。低级别的像素块更大,可以远距离识别,但是遮挡就会造成无法识别。高级别则相反,像素块小,允许遮挡一定范围,但是像素块更密集。

QrConfig config = new QrConfig();
// 高纠错级别
config.setErrorCorrection(ErrorCorrectionLevel.H);
QrCodeUtil.generate("https://hutool.cn/", config, FileUtil.file("e:/qrcodeCustom.jpg"));

效果如图:

qrcodeH.jpg

# 识别二维码

// decode -> "http://hutool.cn/"
String decode = QrCodeUtil.decode(FileUtil.file("d:/qrcode.jpg"));

# 生成SVG矢量图二维码(since 5.8.6)

QrConfig qrConfig = QrConfig.create().setImg("d:/test/logo.png")
				.setForeColor(Color.blue)
				.setBackColor(Color.pink)
				.setRatio(8)
				.setErrorCorrection(ErrorCorrectionLevel.M)
				.setMargin(1);
		String svg = QrCodeUtil.generateAsSvg("https://hutool.cn/", qrConfig);

效果如图:

hutool_qr.png

# 生成Ascii Art字符画二维码(sincec 5.8.6)

QrConfig qrConfig = QrConfig.create()
				.setForeColor(Color.BLUE)
				.setBackColor(Color.MAGENTA)
				.setWidth(0)
				.setHeight(0).setMargin(1);
		String asciiArt = QrCodeUtil.generateAsAsciiArt("https://hutool.cn/",qrConfig);

生成的二维码字符画文本:

█▀▀▀▀▀▀▀█▀█▀█▀█▀█▀█▀▀▀▀▀▀▀█
█ █▀▀▀█ █▀▄▀▄ ▄▀ ▀█ █▀▀▀█ █
█ █   █ █▀█▄█▄▄▀▄ █ █   █ █
█ ▀▀▀▀▀ █▀█ █ ▄▀▄▀█ ▀▀▀▀▀ █
██▀██▀█▀██▄▄▄▀█ ▄▀▀██▀█▀█▀█
█▄▀▀  ▀▀ ▀▄▀█ ▀▀▀█████▀ ▀ █
█ ▄▄▀ ▄▀███▀ █▄█▄▀  ▀▄▄█▄▀█
██▀ ▀▀█▀█▄ ▀▄▀█▄██▄▀ ▀▀▄███
█ ▄▄▄▄█▀█▀  ▀█▀ ▀▀▀ ▀   ▄ █
█▀▀▀▀▀▀▀██▀  █▄ ▀ █▀█ █ █▄█
█ █▀▀▀█ █▀▀█▄▄▀█▄ ▀▀▀  █▀▀█
█ █   █ ███▄█▀█▄█▀█▄▄▀█▄▄▄█
█ ▀▀▀▀▀ █▄▄█   ▀█▀▄  ██▀▀ █
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀

打印到控制台的效果:

asscii_art_qr.png

上次更新: 2025/05/06, 10:48:51
Servlet工具-ServletUtil
邮件工具-MailUtil

← Servlet工具-ServletUtil 邮件工具-MailUtil→

Theme by Vdoing | Copyright © 2023-2025 Hutool | MulanPSL-2.0
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×