2021SC@SDUSC Zxing开源代码(一)综述


一、Zxing是什么?

ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口。Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码。
其所支持的基本1D/2D条码类型有:

1D product1D industrial2D
UPC-ACode 39QR Code
UPC-ECode 93Data Matrix
EAN-8Code 128Aztec
EAN-13CodabarPDF 417
UPC/EAN Extension 2/5ITFMaxiCode
RSS-14
RSS-Expanded

二、核心代码确定

1.代码目录结构分析

模块描述
android-core配置Android摄像头
android-integration简化Intent与Android客户端集成
androidAndroid客户端源码
core条码解码编码的核心算法
javaseJavaSE的客户端代码
zxingorg在线解析二维码
zxing.appspot.com在线生成二维码

2.核心代码确定

经过小组讨论,我们定位项目的核心代码为Android模块、core模块以及Android-core模块

Android模块是调用Android手机摄像头,进行扫码并返回结果的主要功能模块,其项目目录如下:

  • android包:zxing客户端完成扫码流程的主要实现处理类(包括相机预览、扫描、解码、返回结果等)
  • camera包:包含摄像头的相关管理类
  • share包:处理条码分享功能
  • encode包:编码功能的组件集合(具体编码算法在core模块内)
  • clipboard包:剪贴板功能
  • history包:实现“历史记录”、连接数据库的相关类
  • result包:条码扫描的结果被分为不同的类型(如图书ISBN码、wifi信息的编码、地址簿码等),该包下的类根据类型进行不同的处理操作
  • book包:若扫码结果是图书的ISBN码,可以选择联网查询该书的详细信息。该包中的类处理实现相关功能。
  • wifi包:若扫描到的二维码是对wifi信息的编码,那么最终扫描结果页会展示一个“连接到网络”的按钮,点击此按钮就会自动尝试连接。该包中所包含的类则是链接网络所需的工具类

core模块是处理条码的核心算法模块,其下有aztec、qrcode、pdf417等不同码制的编码解码处理包,同时还有一些公用算法(如图像的二值处理等)放在common包中,具体结构流程会在后续代码分析中展开,这里不作赘述。

Android-core模块下只有一个类,是相机的相关配置信息


三、项目导入

ZXing项目使用Maven管理编译, 这里我使用搭建了安卓环境的Idea来导入Zxing项目。因为我负责的代码部分主要是android相关流程,与具体实现算法无关。而zxing算法库 core、android-core, 库的开发者已经放在AS对应的仓库中了,因此我选择新建一个项目,将源码中的android目录导入AS,接下来添加jar包来导入项目。

1. 新建 Android 项目

在这里插入图片描述

2. 导入 android 目录

下载源码并解压后,项目目录如下:
在这里插入图片描述
选择其中的android目录,将其中的 res 文件夹和 com 文件夹复制替换到新项目的src.main.java文件夹下,将AndroidManifest.xml文件复制到src.main文件夹下,最终目录结构如下:
在这里插入图片描述

3. 引入 jar 包

为了使项目正常运行,需要 core.jar 包和 android-core.jar 包,因为 android-core.jar 包中只有一个相机配置类 CameraConfigurationUtils.java,因此这里直接将该类复制到主代码的camera包中
将 core.jar 包复制到 app.libs 下,右键选择 add as Library,成功导入


四、分工

成员一:分析Andriod模块主要代码,理清Zxing的Android端调用流程,并且尝试优化相机配置代码,解决扫码区域小、图像拉伸等问题,提高二维码识别效率。
博客地址

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

成员三:分析core模块代码中图像编码算法(以主流码制QR Code为例),尝试加强二维码保密性,并且试图生成带有logo、色彩的二维码;尝试实现数据压缩编码算法的优化,使在整体数据压缩后,码字数目得到减少,提高编码效率
博客地址

@zxing/library是一个源的Java条码图像处理库。它可以解码和生成不同类型的条码,如二维码和一维码。该库提供简单易用的API,可以将条码图像转换为对应的文本数据,或者将文本数据生成为条码图像。 使用@zxing/library,我们可以轻松地实现将一维码和二维码解码为文本数据的功能。只需提供相应的条码图像,调用库中的解码方法即可获取到条码所代表的文本数据。这对于快速处理扫描到的条码信息非常有用,例如在移动支付、电商购物和物流快递等场景下。 除了解码外,@zxing/library还提供了生成条码图像的功能。我们可以根据需要的条码类型和文本数据,调用库中的生成方法得到相应的条码图像。这样,我们可以方便地将文本数据转化为可供扫描的条码图像,用于商品标识、会员卡等应用。 @zxing/library支持多种常见的条码类型,如EAN-13、UPC-A、Code39、QR Code等。而且它还可以处理包含错误修正级别、尺寸和颜色等参数的高度定制化的条码生成需求。 由于它是源的,@zxing/library拥有一个活跃的社区,更新频繁且稳定。对于发者来说,可以轻松集成并使用该库,无需自己从头始编写条码图像处理的代码。 总之,@zxing/library是一个功能强大且易用的条码图像处理库,可以实现条码的解码和生成。无论是解码扫描到的条码信息,还是生成可供扫描的条码图像,@zxing/library都是一个值得推荐的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值