国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android zxing如何識別反轉二維碼詳解

2019-12-12 00:31:54
字體:
來源:轉載
供稿:網友

前言

說起二維碼掃描,估計很多人用的是 zxing 吧。

需要學習的朋友們也可以先看看這篇文章:http://m.survivalescaperooms.com/article/99765.htm

然而 zxing 雖然好用,但是卻有一些坑。

這邊分析一下自己實際項目遇到的一個坑。

什么坑呢?

下面舉個栗子你就懂了。

這邊生成二維碼使用的是網絡上的一個網站聯圖

以百度為例,正常情況生成的二維碼如下:

這種情況下用 zxing 分分鐘就可以識別出來。

但是假設我將前景色和后景色調換,生成的二維碼如下:

這種情況下 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:

  • 通過交替識別可能會降低識別速度,因此次數設置為多少需要自己調試把控。
  • 計數時注意避免次數溢出。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 靖远县| 武邑县| 淮安市| 江安县| 桓台县| 南安市| 双鸭山市| 梅河口市| 洛阳市| 修水县| 敖汉旗| 大新县| 金昌市| 民乐县| 贺兰县| 高邑县| 周宁县| 错那县| 安阳县| 霞浦县| 石台县| 柘荣县| 全椒县| 沁源县| 中西区| 洱源县| 灵石县| 富源县| 东宁县| 梁河县| 彰化市| 东至县| 五莲县| 通渭县| 宁城县| 锦屏县| 开阳县| 上饶县| 中西区| 和静县| 福鼎市|