- 一、Zxing是什么?
- 二、核心代码确定
- 1.代码目录结构分析
- 2.核心代码确定
- 三、分工
一、Zxing是什么?
ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口。Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码。
其所支持的基本1D/2D条码类型有:
| 1D product | 1D industrial | 2D |
|---|---|---|
| UPC-A | Code 39 | QR Code |
| UPC-E | Code 93 | Data Matrix |
| EAN-8 | Code 128 | Aztec |
| EAN-13 | Codabar | PDF 417 |
| UPC/EAN Extension 2/5 | ITF | MaxiCode |
| RSS-14 | ||
| RSS-Expanded |
| 模块 | 描述 |
|---|---|
| android-core | 配置Android摄像头 |
| android-integration | 简化Intent与Android客户端集成 |
| android | Android客户端源码 |
| core | 条码解码编码的核心算法 |
| javase | JavaSE的客户端代码 |
| zxingorg | 在线解析二维码 |
| zxing.appspot.com | 在线生成二维码 |
经过小组讨论,我们定位项目的核心代码为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模块下只有一个类,是相机的相关配置信息
三、分工
成员一:分析Andriod模块主要代码,理清Zxing的Android端调用流程,并且尝试优化相机配置代码,解决扫码区域小、图像拉伸等问题,提高二维码识别效率。
博客地址
成员二:分析core模块代码中图像解码算法(以主流码制QR Code为例),尝试对光线不足或过强情况下二维码损坏的图像进行预处理后精准解码;尝试优化二维码检测算法
博客地址
成员三:分析core模块代码中图像编码算法(以主流码制QR Code为例),尝试加强二维码保密性,并且试图生成带有logo、色彩的二维码;尝试实现数据压缩编码算法的优化,使在整体数据压缩后,码字数目得到减少,提高编码效率
博客地址



