這篇文章主要介紹Android zxing識別反轉二維碼的方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
金昌網站制作公司哪家好,找創新互聯!從網頁設計、網站建設、微信開發、APP開發、自適應網站建設等網站項目制作,到程序開發,運營維護。創新互聯自2013年創立以來到現在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選創新互聯。
前言
說起二維碼掃描,估計很多人用的是 zxing 吧。
然而 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:
通過交替識別可能會降低識別速度,因此次數設置為多少需要自己調試把控。
計數時注意避免次數溢出。
以上是“Android zxing識別反轉二維碼的方法”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注創新互聯行業資訊頻道!
文章標題:Androidzxing識別反轉二維碼的方法
網頁地址:http://m.newbst.com/article34/ijsise.html
成都網站建設公司_創新互聯,為您提供外貿網站建設、網站策劃、域名注冊、網站內鏈、建站公司、Google
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯