2017 年 1 月 9 號(hào),微信正式發(fā)布小程序,最開(kāi)始只能通過(guò)微信「掃一掃」識(shí)別進(jìn)入特定小程序,4 月 14 號(hào),正式開(kāi)放了「長(zhǎng)按識(shí)別二維碼」的功能,這意味著用戶使用小程序的便捷程度將大大提高。
此后,僅僅過(guò)了 4 天,微信又推出了小程序碼,支持「掃一掃」和「長(zhǎng)按識(shí)別掃碼」。
小程序碼雖然長(zhǎng)得跟二維碼截然不同,但二維碼所有的功能,小程序碼同樣具備。
為什么微信要推出這樣的異形二維碼?小程序碼背后又有何故事?
今天微勤廣州網(wǎng)站建設(shè)就來(lái)說(shuō)一下小程序的發(fā)展歷程:
二維碼 VS 小程序碼
第一次掃小程序碼的時(shí)候,其實(shí)是抱著試一試的心態(tài)來(lái)的。
當(dāng)時(shí)就在想,這么不像二維碼的碼真的能掃出來(lái)?結(jié)果一試還真可以!后面通過(guò)查找資料才發(fā)現(xiàn),原來(lái)這種異形二維碼并不是微信的首創(chuàng),F(xiàn)acebook、Snap 等公司都已經(jīng)推出過(guò)類似的異形碼:
有這么一個(gè)二維碼是通過(guò)圖像處理和識(shí)別技術(shù)把傳統(tǒng)二維碼中近70%的色塊抹掉,做成一種近乎無(wú)形的二維碼。它是以色列一家創(chuàng)業(yè)公司(Visualead)的作品。
阿里巴巴于2015年投資了這家公司,在旗下的網(wǎng)站、APP 以及云計(jì)算等產(chǎn)品中已經(jīng)開(kāi)始使用相關(guān)技術(shù)。
面對(duì)市面上這么多好玩又有趣的二維碼,微信推出專屬的小程序碼,既意料之外,又情理之中。
如果上面的理由還沒(méi)有說(shuō)服到你,我們?cè)購(gòu)亩S碼和小程序碼對(duì)比的角度,來(lái)看看小程序碼有什么優(yōu)點(diǎn)。
傳統(tǒng)二維碼往往以有下幾個(gè)缺點(diǎn):
掃碼預(yù)期:每張二維碼的背后可能代表一個(gè)文件,一個(gè)頁(yè)面、又或者是一個(gè)應(yīng)用;
安全性:二維碼由于其開(kāi)放性,很容易成為木馬病毒的溫床,很多人會(huì)擔(dān)心掃碼之后可能使自己的手機(jī)感染病毒而放棄掃碼;
品牌宣傳:無(wú)法滿足小程序的品牌宣傳需求;
小程序碼的優(yōu)點(diǎn):
觀賞性:小程序碼與普通二維碼相比,看起來(lái)更美觀;
掃碼預(yù)期:掃碼前能明確知道掃碼之后將會(huì)體驗(yàn)到一個(gè)小程序;
安全性:小程序碼目前只能通過(guò)微信產(chǎn)生,并且只能通過(guò)微信識(shí)別,安全性更高;
品牌宣傳:每個(gè)小程序碼右下角都是固定的微信小程序 Logo,每見(jiàn)到一次小程序碼,大家就能多一次聯(lián)想到微信小程序;
高容錯(cuò)性:當(dāng)一張二維碼圖片中間嵌有某些 Logo 圖片時(shí),其實(shí)相當(dāng)于是把最中間部分有用的編碼信息挖掉,再貼一張 Logo 圖片上去。而小程序碼不同,中間的 Logo 區(qū)并不包含數(shù)據(jù)編碼的部分,因此小程序碼擁有更高的容錯(cuò)性。
很明顯,小程序碼是更好的選擇。
小程序碼的綻放過(guò)程
小程序碼最初的設(shè)計(jì)稿雛形,看起來(lái)一朵花的形狀,稍有不同的是這個(gè)雛形圖中只有兩個(gè)定位點(diǎn)。
而目前我們看到的小程序碼,一共有3個(gè)定位點(diǎn)。
目前小程序碼一共支持 3 種容量,分別是 36 射線、54 射線和 72 射線。
每個(gè)版本分別對(duì)應(yīng) L、M、Q、H 4種容錯(cuò)級(jí)別:
L 級(jí)容錯(cuò)的小程序碼,大約 10% 的字碼可被修正;
M 級(jí)容錯(cuò)的小程序碼,大約 15% 的字碼可被修正;
Q 級(jí)容錯(cuò)的小程序碼,大約 25% 的字碼可被修正;
H 級(jí)容錯(cuò)的小程序碼,大約 35% 的字碼可被修正;
這應(yīng)該如何理解呢?
例如 H 級(jí)容錯(cuò)的小程序碼,大約 35 %的字碼可被修正。這意味著在最理想情況下,當(dāng)這個(gè)小程序碼 35% 的面積被遮擋/損壞,掃碼引擎還是能識(shí)別出這個(gè)小程序碼承載的信息。
但是,這 35% 被破壞的面積,不能是定位圖案和功能性數(shù)據(jù),必須是純編碼區(qū),而且錯(cuò)誤的區(qū)域還要分布得剛剛好,條件是非??量痰?/span>。
所以,這里的百分?jǐn)?shù)是一個(gè)非常理想的數(shù)據(jù),實(shí)際測(cè)試的結(jié)果會(huì)比這個(gè)百分?jǐn)?shù)稍微低一些。
不過(guò)現(xiàn)階段,當(dāng)我們通過(guò)官方 API 文檔去請(qǐng)求一張小程序碼圖片時(shí),暫時(shí)不用(或者說(shuō)未能)指定期望生成的是哪種版本、哪個(gè)容錯(cuò)級(jí)別的小程序碼,這些是微信后臺(tái)會(huì)幫開(kāi)發(fā)者自動(dòng)選擇的。
麻雀雖小,五臟俱全。
小程序碼有兩個(gè) Logo 區(qū)域,分別是中間的自定義 Logo 區(qū)和右下角的官方 Logo 區(qū),灰色的區(qū)域是小程序碼的數(shù)據(jù)編碼區(qū),其它彩色區(qū)域是小程序碼的功能性數(shù)據(jù)(主要包括版本、糾錯(cuò)等信息。
至于具體如何對(duì)應(yīng),由于微信官方暫時(shí)尚未對(duì)外公開(kāi),所以這里也要先保密一下哦)
小程序碼這朵「菊花」是如織綻放的呢?主要要以下幾個(gè)步驟:
1、定位點(diǎn)
首先確定 3 個(gè)定位點(diǎn)和右下角的官方 logo 區(qū),經(jīng)過(guò)第一步小程序碼的大小也隨著確定。
2、信息編碼區(qū)
編碼的過(guò)程主要是把原始信息(例如某個(gè)小程序的首頁(yè))轉(zhuǎn)化成計(jì)算機(jī)能識(shí)別的語(yǔ)言——二進(jìn)制序列(例如 0110…110)的過(guò)程。
聽(tīng)起來(lái)是不是有點(diǎn)抽象?你可以這么理解,六個(gè)月大的嬰兒吃不了大米,但是我們可以把大米砸碎研磨變成米漿米糊,這樣他就可以食用消化的,原理是差不多的,大而化小 。
編碼完的下一步是加糾錯(cuò)碼。
這個(gè)過(guò)程有點(diǎn)復(fù)雜,這里我也嘗試用大家能聽(tīng)懂的語(yǔ)言給大家解釋一下。
假設(shè)桌子上先是放了 100 個(gè)生雞蛋(代表上一步已經(jīng)轉(zhuǎn)換好的二進(jìn)制序列),然后再加入120個(gè)熟雞蛋(代表糾錯(cuò)碼,具體個(gè)數(shù)就視糾錯(cuò)率而定了,這里只是一種假設(shè))。表面上看起來(lái)生雞蛋和熟雞蛋并沒(méi)有太大的區(qū)別,但是其實(shí)還是有辦法能辨別出來(lái)的。例如,生雞蛋由于蛋黃懸浮到雞蛋中間,重心不穩(wěn),無(wú)法旋轉(zhuǎn),而熟雞蛋是可以旋轉(zhuǎn)的。
經(jīng)過(guò)糾錯(cuò)碼這個(gè)步驟,數(shù)據(jù)量變大了(從生熟雞蛋的例子來(lái)看,桌子上的雞蛋由 100 個(gè)變?yōu)?220 個(gè)),而回到我們上一個(gè)步驟,相當(dāng)于把二進(jìn)制序列 0110…110 進(jìn)行了擴(kuò)展(假設(shè)原來(lái) 0 和 1 加起來(lái)一共有 170 位,經(jīng)過(guò)糾錯(cuò)編碼之后就變成了一共 400 位的 1010…101)。
這里需要補(bǔ)充說(shuō)明的一點(diǎn)是,加糾錯(cuò)碼這個(gè)階段不只是讓數(shù)據(jù)量簡(jiǎn)單地增大。
一旦小程序碼的版本、糾錯(cuò)級(jí)別確定了,其對(duì)應(yīng)的糾錯(cuò)碼都是固定的了,這樣解碼階段才能通過(guò)對(duì)應(yīng)的規(guī)則去消除糾錯(cuò)碼,把真正有用的數(shù)據(jù)保留下來(lái)(回到生熟雞蛋的例子就是只留下生雞蛋,而把熟雞蛋排除掉)。
經(jīng)過(guò)信息轉(zhuǎn)換和糾錯(cuò)編碼之后,我們得到一串最終的二維碼序列,就可以把信息按一定的編碼順序填充到小程序碼的編碼區(qū)域(1對(duì)應(yīng)的是黑色,0對(duì)應(yīng)的是白色)。
填充之后我們發(fā)現(xiàn)小程序上花瓣看起來(lái)很不均勻,比如下圖:
所以為了讓小程序碼的花瓣看起來(lái)更加均衡,需要再多做一步操作。
3、掩碼操作
將小程序碼跟 32 種掩膜(又稱「mask」,可依照一定的規(guī)則生成)進(jìn)行異或運(yùn)算,最終選取效果最佳的作為最終的小程序碼。
4、功能性數(shù)據(jù)
最后一步是填充功能性數(shù)據(jù),至此,小程序碼就完成了它的綻放過(guò)程。
本文由廣州網(wǎng)站建設(shè)團(tuán)隊(duì)微勤網(wǎng)絡(luò)整編而成,如需了解更多網(wǎng)站建設(shè)資訊、案例、各種網(wǎng)站建設(shè)知識(shí)可以聯(lián)系廣州網(wǎng)站建設(shè)公司微勤網(wǎng)絡(luò)專業(yè)項(xiàng)目經(jīng)理進(jìn)行一對(duì)一問(wèn)答。
本文地址:小程序碼是這樣綻放的,你知道嗎?:http://tiedyelove.com//article/86.html