2021SC@SDUSC-Zxing(一):Zxing初步认识

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 用于百货业和超市
1D industrial Code 39 内部管理码,工业行业应用较多,适用于比较小的商品
Code 93 密度比39码高,面积不足时,可替代39码
Code 128 比39码能表现更多的字符,适用于非销售点产品,比如可作为运输行业的集装箱识别码。
Codabar 自检条码,用于读取印刷形式的条码,用于航运业、血库单、图书馆书脊等地方
ITF 全球范围内的商品运输包装
2D QR Code 通常用于产品跟踪或营销,比如广告、杂志或名片。
Data Matrix 占用空间比QR二维码小,是物流或运营中的小件产品的理想选择
Aztec 适用于运输行业的二维码,多用于机票和航空公司登机牌。
PDF 417 适用于需要存储大量数据(如照片、指纹、签名、文本、数字、图形或其他信息)的应用程序,也可用于标识危险品、电子仪器技术规格与标准化数据
MaxiCode Maxicode是特别为高速扫瞄而设计,主要应用于包裹搜寻和追踪上。
RSS-14 RSS系列条码是一维码和二维码的组合码。
RSS-Expanded 同上
由此可见,Zxing的应用范围是非常广泛的。

二、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
可以生成、解析码 只能生成码
生成条形码下方没有数字 生成的条形码下边有数字

四、分工

分析core模块代码中图像解码算法(以主流码制QR Code为例),尝试对光线不足或过强情况下二维码损坏的图像进行预处理后精准解码;尝试优化二维码检测算法。

通过查阅资料简要总结了以上几条。

猜你喜欢

转载自blog.csdn.net/weixin_45883443/article/details/120504603