Androidzxing识别反转二维码的方法-创新互联

这篇文章主要介绍Android zxing识别反转二维码的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

目前创新互联公司已为千余家的企业提供了网站建设、域名、网络空间、网站托管运营、企业网站设计、邯山网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

前言

说起二维码扫描,估计很多人用的是 zxing 吧。

然而 zxing 虽然好用,但是却有一些坑。

这边分析一下自己实际项目遇到的一个坑。

什么坑呢?

下面举个栗子你就懂了。

这边生成二维码使用的是网络上的一个网站联图

以百度为例,正常情况生成的二维码如下:

Android zxing识别反转二维码的方法

这种情况下用 zxing 分分钟就可以识别出来。

但是假设我将前景色和后景色调换,生成的二维码如下:

Android zxing识别反转二维码的方法

这种情况下 zxing 就识别不出了。

Android zxing识别反转二维码的方法

所以说这种时候就很无奈了。毕竟有些场景就需要用到反转二维码。

所以本篇说的 zxing 的坑就是无法识别反转二维码。

咋办呢?凉拌。

这种时候就需要去源码看看了。

看一下二维码解析的代码逻辑在哪?

通过一番折腾,跟踪调试,最后定位到如下位置:

https://github.com/zxing/zxing/blob/master/android/src/com/google/zxing/client/android/DecodeHandler.java#L80

关键代码:(DecodeHandler.java 里面的 decode 方法)

BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));

如果要识别上面的反转百度二维码,需要如何处理呢?

很简单,只需要将上面的代码改为:

BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source.invert()));

即可。

到了这里,相信聪明的你应该知道如何让 zxing 同时支持两种格式了。

只需要设置一个计数器,然后在指定次数(比如前 3 次)里面使用

BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));

在另外次数(比如后 3 次)里面使用

BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source.invert()));

交替使用即可。

这样就可以解决正转和反转二维码的识别了。

NOTE:

  • 通过交替识别可能会降低识别速度,因此次数设置为多少需要自己调试把控。

  • 计数时注意避免次数溢出。

以上是“Android zxing识别反转二维码的方法”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!


网页标题:Androidzxing识别反转二维码的方法-创新互联
链接URL:http://scyanting.com/article/ddsdsd.html