Androidzxing識(shí)別反轉(zhuǎn)二維碼的方法

這篇文章主要介紹Android zxing識(shí)別反轉(zhuǎn)二維碼的方法,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

金昌網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)自2013年創(chuàng)立以來(lái)到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

前言

說(shuō)起二維碼掃描,估計(jì)很多人用的是 zxing 吧。

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

這邊分析一下自己實(shí)際項(xiàng)目遇到的一個(gè)坑。

什么坑呢?

下面舉個(gè)栗子你就懂了。

這邊生成二維碼使用的是網(wǎng)絡(luò)上的一個(gè)網(wǎng)站聯(lián)圖

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

Android zxing識(shí)別反轉(zhuǎn)二維碼的方法

這種情況下用 zxing 分分鐘就可以識(shí)別出來(lái)。

但是假設(shè)我將前景色和后景色調(diào)換,生成的二維碼如下:

Android zxing識(shí)別反轉(zhuǎn)二維碼的方法

這種情況下 zxing 就識(shí)別不出了。

Android zxing識(shí)別反轉(zhuǎn)二維碼的方法

所以說(shuō)這種時(shí)候就很無(wú)奈了。畢竟有些場(chǎng)景就需要用到反轉(zhuǎn)二維碼。

所以本篇說(shuō)的 zxing 的坑就是無(wú)法識(shí)別反轉(zhuǎn)二維碼。

咋辦呢?涼拌。

這種時(shí)候就需要去源碼看看了。

看一下二維碼解析的代碼邏輯在哪?

通過(guò)一番折騰,跟蹤調(diào)試,最后定位到如下位置:

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

關(guān)鍵代碼:(DecodeHandler.java 里面的 decode 方法)

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

如果要識(shí)別上面的反轉(zhuǎn)百度二維碼,需要如何處理呢?

很簡(jiǎn)單,只需要將上面的代碼改為:

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

即可。

到了這里,相信聰明的你應(yīng)該知道如何讓 zxing 同時(shí)支持兩種格式了。

只需要設(shè)置一個(gè)計(jì)數(shù)器,然后在指定次數(shù)(比如前 3 次)里面使用

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

在另外次數(shù)(比如后 3 次)里面使用

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

交替使用即可。

這樣就可以解決正轉(zhuǎn)和反轉(zhuǎn)二維碼的識(shí)別了。

NOTE:

  • 通過(guò)交替識(shí)別可能會(huì)降低識(shí)別速度,因此次數(shù)設(shè)置為多少需要自己調(diào)試把控。

  • 計(jì)數(shù)時(shí)注意避免次數(shù)溢出。

以上是“Android zxing識(shí)別反轉(zhuǎn)二維碼的方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

文章標(biāo)題:Androidzxing識(shí)別反轉(zhuǎn)二維碼的方法
網(wǎng)頁(yè)地址:http://www.muchs.cn/article34/ijsise.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站策劃域名注冊(cè)、網(wǎng)站內(nèi)鏈、建站公司、Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)