2021SC@SDUSC
一、Zxing简介
ZXing (“zebra crossing”) 是一个开源的、多格式的1D/2D条形码图像处理库,支持在图像中解码和生成条形码,用Java实现,具有其他语言的端口,而且支持PC端、移动端。目前支持以下格式的1D/2D条形码:
Type | 名称 | 简述 |
---|---|---|
1D product | UPC-A | UPC标准码,标识商品 |
UPC-E | UPC缩短码,缩短码一般用在商品包装比较小也就是条码位置不够的商品上。 | |
EAN-8 | 用于百货业和超市 | |
EAN-13 | 用于百货业和超市 | |
Code 39 | 内部管理码,工业行业应用较多,适用于比较小的商品 | |
Code 93 | 密度比39码高,面积不足时,可替代39码 | |
Code 128 | 比39码能表现更多的字符,适用于非销售点产品,比如可作为运输行业的集装箱识别码。 | |
Codabar | 自检条码,用于读取印刷形式的条码,用于航运业、血库单、图书馆书脊等地方 | |
ITF | 全球范围内的商品运输包装 | |
RSS-14 | RSS系列条码是一维码和二维码的组合码。 | |
RSS-Expanded | 同上 | |
2D | QR Code | 通常用于产品跟踪或营销,比如广告、杂志或名片。 |
Data Matrix | 占用空间比QR二维码小,是物流或运营中的小件产品的理想选择 | |
Aztec | 适用于运输行业的二维码,多用于机票和航空公司登机牌。 | |
PDF 417 | 适用于需要存储大量数据(如照片、指纹、签名、文本、数字、图形或其他信息)的应用程序,也可用于标识危险品、电子仪器技术规格与标准化数据 | |
MaxiCode | Maxicode是特别为高速扫瞄而设计,主要应用于包裹搜寻和追踪上。 |
二、Zxing模块分析
ZXing 由多个模块组成,包括核心图像解码库、JavaSE 特定客户端代码和 Android 客户端条形码扫描仪。它是许多其他第三方开源项目的基础。
GitHub地址:https://github.com/zxing/zxing
API文档:https://zxing.github.io/zxing/apidocs/index.html
介绍文档(和docs中的内容同):https://zxing.github.io/zxing/
在这里我们称每个文件夹为一个模块,对各文件夹的描述如下:
模块 | 描述 |
---|---|
core | 核心图像解码库以及测试代码 |
javase | 特定于JavaSE的客户端代码 |
android | 安卓客户端条码扫描器,安卓扫码的实例 |
android-integration | 支持通过 Intent 与安卓集成 |
android-core | 配置 Android 相机 |
zxingorg | 基于网络的(在线的)条形码解码器的代码 |
zxing.appspot.com | 基于网络的(在线的)条形码生成器的代码 |
docs | Zxing的介绍文档 |
核心部分的代码为:core、android、android-core
三、与其他相关的第三方开源项目简要比较
Zbar和 barcode4j是官方的README.md文档中提到的其他相关的第三方开源项目。Zbar和Zxing均可以解码;barcode4j和Zxing均用java编写,都可以生成码。
Zxing | Zbar |
---|---|
Java编写,覆盖主流编程语言 | C编写,速度极快 |
目前仍有多人维护 | 目前处于无人维护状态 |
Zxing支持更多的1D/2D条形码,例如Data Matrix、Axtec等 | Zbar支持1D/2D条形码较少 |
Zxing不会出现中文乱码 | Zbar 有中文会乱码 |
Android一般用Zxing | ios一般用Zbar |
Zxing可以生成、解析码 | Zbar无法生成码 |
更多详细数据对比可见:QR 代码读取基准和比较|动态软件开发人员 (dynamsoft.com)
Zxing | barcode4j |
---|---|
可以生成、解析码 | 只能生成码 |
生成条形码下方没有数字 | 生成的条形码下边有数字 |
通过查阅资料简要总结了以上几条。
四、分工
成员一:分析Andriod模块主要代码,理清Zxing的Android端调用流程,并且尝试优化相机配置代码,解决扫码区域小、图像拉伸等问题,提高二维码识别效率。
博客地址
成员二:分析core模块代码中图像解码算法(以主流码制QR Code为例),尝试对光线不足或过强情况下二维码损坏的图像进行预处理后精准解码;尝试优化二维码检测算法
博客地址
成员三:分析core模块代码中图像编码算法(以主流码制QR Code为例),尝试加强二维码保密性,并且试图生成带有logo、色彩的二维码;尝试实现数据压缩编码算法的优化,使在整体数据压缩后,码字数目得到减少,提高编码效率
博客地址