最近做了一个识别图片二维码相关的东西,遇到一些问题,在此记录一下,以备查阅。
相关网页:
zxing源码:https://github.com/zxing/zxing
zxing相关资源:https://github.com/zxing/zxing/releases
zxing相关jar包:http://repo1.maven.org/maven2/com/google/zxing/
基于zxing的在线条码/二维码识别:http://zxing.org/w/decode.jspx
参考:
http://kesun-shy.iteye.com/blog/2154169
http://my.oschina.net/kevinvane/blog/173070
遇到的坑及解决方案:
1.zxing版本
建议使用最新版,最新版各方面都会比较完善。
之前拿了老版的用,结果发现有些类找不到,又去网上到处搜了一遍,结果最后发现最新版的里面都集成了。
2.无法识别
遇到无法识别的,建议使用在线版的识别一下,如果在线版可以,那么说明你的代码还有问题。
如果在线版也无法识别,那么试试Barcode Scanner,如果这个可以识别,那么还是你的代码有问题。
如果都无法识别,那么,放弃吧,zxing应该是识别不了了,去看看其他的条码识别工具。
3.jar包
有几个jar包:
- core:核心包,zxing的核心功能在里面
- android-core:camera相关的包,没具体研究,如果需要用到camera的,可以看看
- android-integration:没有具体研究,貌似test工程需要用到这个
4.关于代码
想要看使用示例的,可以直接下载Barcode Scanner的源码,里面有一个测试工程和Barcode Scanner的源码,基本上照抄里面的代码就可以实现你要的功能。
5.精确度
根据我个人的几次测试发现,输入数据为yuv的会更精确一些,直接输入彩色图片效果似乎不好,猜测可能是yuv数据输入时,zixng直接处理了y部分数据,待证实。
同样一张图,转换成yuv数据输入可以识别,直接bitmap读入无法识别。
另外,如果有png图,图上有透明部分的,可能会无法识别,建议先填充透明部分,再识别。
思路为:在底图上填充白色背景,然后将png画到底图上。
以上结果仅为我个人测试结果,可能不准确,仅供参考。