91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android zxing識別反轉二維碼的方法

發布時間:2021-02-07 13:53:23 來源:億速云 閱讀:221 作者:小新 欄目:移動開發

這篇文章主要介紹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識別反轉二維碼的方法”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

满洲里市| 修文县| 五峰| 东丰县| 木兰县| 洮南市| 武功县| 南宁市| 博爱县| 布尔津县| 赤壁市| 包头市| 长葛市| 尉犁县| 沂水县| 合作市| 鄂托克前旗| 漯河市| 南岸区| 临城县| 邳州市| 随州市| 嘉兴市| 三门县| 鄂尔多斯市| 嘉定区| 清徐县| 莎车县| 连平县| 永春县| 阳原县| 乐至县| 松江区| 甘德县| 巴林右旗| 临潭县| 永泰县| 河池市| 克什克腾旗| 上思县| 黎城县|