如何轻松用 Spring Boot 3 集成 zxing 生成二维码?🔥
- 内容介绍
- 文章标签
- 相关推荐

先说说在 pom.xml 中添加 zxing 依赖:
com.google.zxing
core
3.5.3
M
极端环境
移动支付
特性 zxing 库功能强大且易于集成,可以作为 spring boot 应用处理二维码的首选方案。大家在实际项目中使用的时候,可以将本文的代码示例封装成工具类,也可以作为参考自己实现。二维码生成也只是 zxing 功能的冰山一角, 它还能解析二维码、生成各种条形码等等,各位读者感兴趣的话可以继续深入探索。 | 产品对比 | |
|---|---|---|
| ZXing | 开源免费 | 功能强大 |
| 其他二维码库 | 可能收费 | 功能相对简单 |
H
CODE_128
复制
注意啦! 我发现好多教程都写得太死板了就像机器人写的一样!这文章我就是要不一样!我要有点灵魂!代码我也乱放一点,反正就是怎么开心怎么来!要的就是这种不羁的风采!
| 产品名称 | 价格 | 特点 |
|---|---|---|
| 某品牌条码扫描枪 | 299元 | 支持多种条码格式,识别速度快 |
| 另一个牌子的扫描枪 | 199元 | 性价比高,适合小型商户使用 |
| 高端工业扫描枪 | 999元 | 防摔耐用,适用于恶劣环境使用 |
| 名称 | 参数说明 |
|---|---|
| EncodeHintType.CHARACTER_SET | 指定编码方式,默认是ISO-8859-1,为了支持中文等特殊字符,需要设置为UTF-8 |
| EncodeHintType.ERROR_CORRECTION | 指定纠错等级,有L、 M、Q、H四个等级,从低到高容错率逐渐提高,但存储容量也会相应减少 |
| EncodeHintType.MARGIN | 指定二维码的边距宽度,默认为4像素 |
代码示例
import java.util.HashMap;import java.util.Map;import com.google.zxing.*;import com.google.zxing.common.*;import java.awt.*;import java.awt.image.*;import java.io.*;public class QRCodeGenerator { public static String generateQRCode { try { //1 设置二维码生成参数 Map hints = new HashMap; hints.put; // 支持中文等特殊字符 hints .put; // 高容错率 MultiFormatWriter writer = new MultiFormatWriter; BitMatrix bitMatrix = writer .encode ; BufferedImage image = new BufferedImage ; for { for { boolean isBlack = bitMatrix .get ; if { image .setRGB ); } else { image .setRGB ); } } } File qrCodeFile = new File ; ImageIO .write; return filePath ; } catch { e .printStackTrace ; return null;} }}
这里主要对代码中ErrorCorrectionLevel和BarcodeFormat这两个大家不是很熟悉的参数做下说明:
- ErrorCorrectionLevel
- L :约7% 的容错率
- M :约15% 的容错率
- Q :约25% 的容错率
- H :约30% 的容错率
- BarcodeFormat常见的条码格式如下:
- QR_CODE
- CODE_128
- EAN_13
- UPC_A
- PDF_417
| 错误纠正级别对比 | |
|---|---|
| 等级 L | M| Q| H| 容错率 | 最少 | 中等 | 多 | 最大 容量 | - | - | - |-|-| 容量减少量| -|-|-|-| 7%| ~15%| ~25%| ~30%| ||||||| | | |
使用方法
- 编写一个方法测试生成二维码:
public static void main{String data ="Hello~ CC";int width=300;// 二维码的宽度int height=300;// 二维码的高度String uuid=UUID randomUUID.toString;String filePath ="D:\\pic\\"+uuid+".png";// 生成的二维码文件的路径generateQRCode;} - 运行后在指定目录生成了一个二维码图片。如果没生成...可能是我电脑抽风了。
应用场景
- 商品物流
- 证件存储
- 移动支付
- 任意角度读取
注意事项
醉了... 重点来了!!! 如果你的电脑配置太低了或者内存不足了生成的图片可能会变形哦!这个我可不是危言风语!一定要保证你的电脑性能足够强大才能驾驭这个强大的 ZXing 工具库!!! 而且啊!生成的图片最好别太大,不然打开都卡顿得厉害!

先说说在 pom.xml 中添加 zxing 依赖:
com.google.zxing
core
3.5.3
M
极端环境
移动支付
特性 zxing 库功能强大且易于集成,可以作为 spring boot 应用处理二维码的首选方案。大家在实际项目中使用的时候,可以将本文的代码示例封装成工具类,也可以作为参考自己实现。二维码生成也只是 zxing 功能的冰山一角, 它还能解析二维码、生成各种条形码等等,各位读者感兴趣的话可以继续深入探索。 | 产品对比 | |
|---|---|---|
| ZXing | 开源免费 | 功能强大 |
| 其他二维码库 | 可能收费 | 功能相对简单 |
H
CODE_128
复制
注意啦! 我发现好多教程都写得太死板了就像机器人写的一样!这文章我就是要不一样!我要有点灵魂!代码我也乱放一点,反正就是怎么开心怎么来!要的就是这种不羁的风采!
| 产品名称 | 价格 | 特点 |
|---|---|---|
| 某品牌条码扫描枪 | 299元 | 支持多种条码格式,识别速度快 |
| 另一个牌子的扫描枪 | 199元 | 性价比高,适合小型商户使用 |
| 高端工业扫描枪 | 999元 | 防摔耐用,适用于恶劣环境使用 |
| 名称 | 参数说明 |
|---|---|
| EncodeHintType.CHARACTER_SET | 指定编码方式,默认是ISO-8859-1,为了支持中文等特殊字符,需要设置为UTF-8 |
| EncodeHintType.ERROR_CORRECTION | 指定纠错等级,有L、 M、Q、H四个等级,从低到高容错率逐渐提高,但存储容量也会相应减少 |
| EncodeHintType.MARGIN | 指定二维码的边距宽度,默认为4像素 |
代码示例
import java.util.HashMap;import java.util.Map;import com.google.zxing.*;import com.google.zxing.common.*;import java.awt.*;import java.awt.image.*;import java.io.*;public class QRCodeGenerator { public static String generateQRCode { try { //1 设置二维码生成参数 Map hints = new HashMap; hints.put; // 支持中文等特殊字符 hints .put; // 高容错率 MultiFormatWriter writer = new MultiFormatWriter; BitMatrix bitMatrix = writer .encode ; BufferedImage image = new BufferedImage ; for { for { boolean isBlack = bitMatrix .get ; if { image .setRGB ); } else { image .setRGB ); } } } File qrCodeFile = new File ; ImageIO .write; return filePath ; } catch { e .printStackTrace ; return null;} }}
这里主要对代码中ErrorCorrectionLevel和BarcodeFormat这两个大家不是很熟悉的参数做下说明:
- ErrorCorrectionLevel
- L :约7% 的容错率
- M :约15% 的容错率
- Q :约25% 的容错率
- H :约30% 的容错率
- BarcodeFormat常见的条码格式如下:
- QR_CODE
- CODE_128
- EAN_13
- UPC_A
- PDF_417
| 错误纠正级别对比 | |
|---|---|
| 等级 L | M| Q| H| 容错率 | 最少 | 中等 | 多 | 最大 容量 | - | - | - |-|-| 容量减少量| -|-|-|-| 7%| ~15%| ~25%| ~30%| ||||||| | | |
使用方法
- 编写一个方法测试生成二维码:
public static void main{String data ="Hello~ CC";int width=300;// 二维码的宽度int height=300;// 二维码的高度String uuid=UUID randomUUID.toString;String filePath ="D:\\pic\\"+uuid+".png";// 生成的二维码文件的路径generateQRCode;} - 运行后在指定目录生成了一个二维码图片。如果没生成...可能是我电脑抽风了。
应用场景
- 商品物流
- 证件存储
- 移动支付
- 任意角度读取
注意事项
醉了... 重点来了!!! 如果你的电脑配置太低了或者内存不足了生成的图片可能会变形哦!这个我可不是危言风语!一定要保证你的电脑性能足够强大才能驾驭这个强大的 ZXing 工具库!!! 而且啊!生成的图片最好别太大,不然打开都卡顿得厉害!

