本文介绍使用开源库zxing生成和解析二维码。
使用zxing首先需要使用源码中的core和javase两个文件制作JAR文件,为了不偏离主题,将这部分放在最后一节讲解,本文直接提供制作好的JAR文件。
百度网盘:链接:https://pan.baidu.com/s/1vQZRPbRKzaQg3-XqsRc-Jw
提取码:y8cq
使用zxing创建二维码
将网盘中zxing文件夹中的zxing3.x.jar文件导入到项目中。
以下的代码将在 C://Users/yangc/Desktop文件夹中创建一张二维码(pic.png),二维码所携带的内容为:https://yangchaofu.cn。创建过程总共分为两个大步骤,第一个大步骤是创建前的准备工作,包含两个小步骤;第二个大步骤是创建步骤 ,包含三个小步骤,整体可以用以下列表结构表示:
- 制作前准备工作
- 定义图片信息和二维码内容
- 定义二维码的属性信息,包括纠错等级,编码格式,二维码边距
- 制作过程
- 使用MultiFormatRead的encode方法生成一个BitMatrix对象
- 指定输出路径
- 使用MatrixToImageWriter的writeToPath方法将BitMatrix对象写入文件
以下代码是对上述描述的实现:
1 | import java.io.File; |
代码执行结果:
使用zxing解析二维码
解析二维码包括三个大步骤,用以下结构描述
- 解析前准备
- 准备一个文件对象,指向需要解析的二维码图片
- 使用ImageIO读取该图片对象为缓冲区图片BufferedImage
- 将BufferedImage转换为一个二进制位图对象
- 定义一个散列表存取二维码的编码格式
- 解析过程步骤
- 定义一个MultiFormatReader 对象,用于解码
- 定义一个Result 对象用来获取解析的结果,这里的参数使用到前面准备的两个重要的数据,被转换为BinaryBitmap的图片对象,和定义解码配置的散列表hints
- 解析结果的展示(可以直接toString得到解析结果,也可是使用getText获取解析文本,使用getBarcodeFromat获取二维码格式)
以下是上述过程的代码表述:
1 | import java.awt.image.BufferedImage; |
以上代码的解析结果:
解析结果:https://yangchaofu.cn
二维码文本内容:https://yangchaofu.cn
二维码格式:QR_CODE
使用zxing源码制作JAR
github上有很多非常优秀的开源项目,这次使用的zxing就是其中之一,如何复用这些代码呢,对于Java来说,jar文件是不陌生的。我在这次实践中第一次体会到了使用源码制作jar文件的过程,记录在此处。
- 新建一个Jave项目;
- 将下载的zxing文件夹中的core和javase两个文件中下的com文件复制到项目的src中,复制中会有文件存在的提示,选择是就可以;
- 由于项目不是完整的项目,项目中会有很多的错误提示,这个不用管,因为我们使用IDE的时候,IDE会帮助我们管理文件的,所以直接选择导出JAR文件,之后我们就可以得到一个最新的zxing的可复用构件。
小结
以上代码实现了使用zxing创建和解析二维码,经测试所生成的二维码识别率和准确性都是满足要求的,解析代码的识别率也很高。zxing是一个很好的解决方案。
感谢慕课网Fcming老师的讲解和慕课网这个平台,十分感谢!