Android条码扫描ZBar和ZXing浅谈

来源:互联网 发布:萨奇苦味矿泉水 知乎 编辑:程序博客网 时间:2024/04/20 21:53

      平时手机上各种软件几乎都会用到条码扫描的功能,像微信和我查查等,扫描速度确实很快。但究竟是如何实现扫描和解码的呢?没有接触到移动开发的时候确实感到很好奇。最近公司在写一个Android项目,其中有一个模块是条码扫描。作为移动开发的新手,刚接到这个项目时候觉得知识很有限,无从下手。只能在网上查找各种有关条码扫描的资料和教程,终于了解到两个开源项目:ZBar和ZXing。

        其实这两个开源项目的使用在一些网站是可以找到的,但大多介绍的是代码片段。刚起步的我根本不知道他们的区别,也不知道优点和缺点,所以无从选择。去百度,去谷歌也没有很明确的介绍。后来两个项目都尝试用了一下,才稍微有些了解。在这里只想分享一些我自己开发时候的感受,给和我一样是新手的朋友一点借鉴,同时如果有不对的地方,也欢迎高手来指教改正。

        首先简单介绍一下两个项目:

                      1. Zbar是一个条码读取的开源项目,如视频流,图像文件。

                          平台支持:LinusUNIXWindowsiosAndroid

                          支持的条码类型:EAN-13UPC-AUPC-EEAN-8

                                                     Code 128Code 39,交错式25码,

                                                     QR Code

                          网址:http://zbar.sourceforge.net/

                      2. Zxing是一个开源的用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言端口,可以实现使用手机的内置摄像头完成条码的扫描,解码和编码。

                          平台支持:J2SEiosAndroid等。

                          支持的条码类型:UPC-AUPC-EEAN-8EAN-13

                                                     Code 39Code 93Code 128Codabar

                                                     ITFRSS-14RSS-ExpandedQR Code

                                                     Data MatrixAztec (beta)PDF417 (beta)

                          网址:http://code.google.com/p/zxing/

         ZBar的ios和android版都是软件开发包,而windows则是一个安装文件,安装后没有UI界面,是用命令行来控制的,它可以调用电脑的摄像头实现扫描和解码。可以看到ZBar是放在SourceForge这个开源项目平台的,而ZXing则是google的一个开源项目,我想这也是ZXing功能层面上比较强大的一个因素。

         然后我想从3个方面对这两个项目进行一下对比。

                       1. 资源:对于一个初学者来说,我感觉最重要的就是资源,在查找的过程中,我感觉对ZXing的介绍要多一些。包括教程和demo,所以我第一个接触并使用的也是ZXing。

                       2. 使用难易:在官网上下载两个项目对比后可以发现,ZXing的android软件包内容很多,几乎每一个功能都用一个package,里边的类也很多,要想都弄懂,实在要下一番功夫。要实现一维码的扫描和解码首先要对项目进行化简,当然网上有很多教程。相比之下ZBar的软件包里边的内容就要少很多,只有一个activity和一个class,其他都是核心代码完成的,我们根本不用关心。所以从使用难易上看ZBar要好一些,最起码适合我这种小白吧。

                       3. 效果:一开始用ZXing写出来的项目,说实话测试的时候感觉已经很快了,基本上摄像头对焦后,解码的结果就返回了。后来用ZBar写发现更快,毕竟它是用C语言写的,基本摄像头扫到后就返回了结果。这时速度上ZBar的优势,当然ZXing好的地方就是它的全面,ZBar可是不支持编码的。

                       4. 还有一些其他的说法:ZBar似乎有授权的问题(说实话我没遇到);ZBar对中文的支持不是很好(ZXing据说也有乱码的情况)。以上只是我个人比较浅薄的认识,只希望对和当初的我一样不太懂的朋友有些帮助。ZXing是我用在公司项目里的。我用ZBar写的小demo,有兴趣的可以下来玩玩。

1 0
原创粉丝点击