337p日本欧洲亚洲大胆艺术96,在线一区二区国产一区二区三区免费公,99欧美日本一区二区留学生,人妻丰满熟妇av无码区免费蜜臀

售前咨詢:0311-8736 0077
售后服務(wù):0311-8736 0066
值班手機(jī):189?3198?6878

微信小程序開發(fā):你一定不知道,小程序碼是這樣綻放的
發(fā)布時(shí)間:2017-09-11 點(diǎn)擊次數(shù):

小程序碼的出現(xiàn)

2017 年 1 月 9 號(hào),微信正式發(fā)布小程序,最開始只能通過微信「掃一掃」識(shí)別進(jìn)入特定小程序。4 月 14 號(hào),正式開放了「長(zhǎng)按識(shí)別二維碼」的功能,這意味著,用戶使用小程序的便捷程度將大大提高。

此后,僅僅過了 4 天,微信又推出了小程序碼,支持「掃一掃」和「長(zhǎng)按識(shí)別掃碼」。

\

小程序碼雖然長(zhǎng)得跟二維碼截然不同,但二維碼所有的功能,小程序碼同樣具備。

為什么微信要推出這樣的異形二維碼?小程序碼背后又有何故事?

別著急,今天就來給大家講講小程序碼背后的故事。

二維碼 VS 小程序碼

第一次掃小程序碼的時(shí)候,其實(shí)是抱著試一試的心態(tài)來的。

當(dāng)時(shí)就在想,這么不像二維碼的碼真的能掃出來?結(jié)果一試還真可以!后面通過查找資料才發(fā)現(xiàn),原來這種異形二維碼并不是微信的首創(chuàng),F(xiàn)acebook、Snap 等公司都已經(jīng)推出過類似的異形碼:

\

下面這個(gè)二維碼通過圖像處理和識(shí)別技術(shù)傳統(tǒng)二維碼中近70%的色塊抹掉,做成一種近乎無形的二維碼。它是以色列一家創(chuàng)業(yè)公司(Visualead)的作品。

\

 

阿里巴巴于2015年投資了這家公司,在旗下的網(wǎng)站、APP 以及云計(jì)算等產(chǎn)品中已經(jīng)開始使用 相關(guān)技術(shù)。

\

 

此外還有很多充滿想象力的「變臉二維碼」(作者:笑臉兔):

\

 

面對(duì)市面上這么多好玩又有趣的二維碼,微信推出專屬的小程序碼,既意之外,又情理之中。

如果上面的理由還沒有說服到你,我們?cè)購(gòu)亩S碼和小程序碼對(duì)比的角度,來看看小程序碼有什么優(yōu)點(diǎn)。

傳統(tǒng)二維碼往往以有下幾個(gè)缺點(diǎn):

小程序碼的優(yōu)點(diǎn):

很明顯,小程序碼是更好的選擇:)

 

小程序碼的綻放過程

這是小程序碼最初的設(shè)計(jì)稿雛形,可以看到的確是一朵花的形狀,稍有不同的是這個(gè)雛形圖中只有兩個(gè)定位點(diǎn)
而目前我們看到的小程序碼一共有3個(gè)定位點(diǎn)。
 
\
 
 

 

這個(gè)是小程序碼的規(guī)范設(shè)計(jì)稿

\
 

目前小程序碼一共支持 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ū)域還要分布得剛剛好,條件是非常苛刻的

所以這里的百分?jǐn)?shù)是一個(gè)非常理想的數(shù)據(jù),實(shí)際測(cè)試的結(jié)果會(huì)比這個(gè)百分?jǐn)?shù)稍微低一些。

不過現(xiàn)階段當(dāng)我們通過官方 API 文檔去請(qǐng)求一張小程序碼圖片時(shí),暫時(shí)不用(或者說未能)指定期望生成的是哪種版本、哪個(gè)容錯(cuò)級(jí)別的小程序碼,這些是微信后臺(tái)會(huì)幫開發(fā)者自動(dòng)選擇的。

麻雀雖小,五臟俱全。

小程序碼有兩個(gè) Logo 區(qū)域,分別是中間的自定義 Logo 區(qū)和右下角的官方 Logo 區(qū),灰色的區(qū)域是小程序碼的數(shù)據(jù)編碼區(qū),其它彩色區(qū)域是小程序碼的功能性數(shù)據(jù)(主要包括版本、糾錯(cuò)等信息

至于具體如何對(duì)應(yīng),由于微信官方暫時(shí)尚未對(duì)外公開,所以這里也要先保密一下哦)

\
\
 

小程序碼這朵菊花是如織綻放的呢?主要要以下幾個(gè)步驟:

1.定位點(diǎn)

首先確定 3 個(gè)定位點(diǎn)和右下角的官方 logo 區(qū),經(jīng)過第一步小程序碼的大小也隨著確定。

\

 

2.信息編碼區(qū)

編碼的過程主要是把原始信息(例如某個(gè)小程序的首頁(yè))轉(zhuǎn)化成計(jì)算機(jī)能識(shí)別的語言——二進(jìn)制序列(例如 0110…110)的過程

聽起來是不是有點(diǎn)抽象?你可以這么理解,六個(gè)月大的嬰兒吃不了大米,但是我們可以把大米砸碎研磨變成米漿米糊,這樣他就可以食用消化的,原理是差不多的,大而化小 :)

\

編碼完的下一步是加糾錯(cuò)碼。

這個(gè)過程有點(diǎn)復(fù)雜,這里我也嘗試用大家能聽懂的語言給大家解釋一下。

假設(shè)桌子上先是放了 100 個(gè)生雞蛋(代表上一步已經(jīng)轉(zhuǎn)換好的二進(jìn)制序列),然后再加入120個(gè)熟雞蛋(代表糾錯(cuò)碼,具體個(gè)數(shù)就視糾錯(cuò)率而定了,這里只是一種假設(shè))。表面上看起來生雞蛋和熟雞蛋并沒有太大的區(qū)別,但是其實(shí)還是有辦法能辨別出來的例如生雞蛋由于蛋黃懸浮到雞蛋中間,重心不穩(wěn),無法旋轉(zhuǎn),而熟雞蛋是可以旋轉(zhuǎn)的。

經(jīng)過糾錯(cuò)碼這個(gè)步驟,數(shù)據(jù)量變大了(從生熟雞蛋的例子來看,桌子上的雞蛋由 100 個(gè)變?yōu)?220 個(gè)),而回到我們上一個(gè)步驟,相當(dāng)于把二進(jìn)制序列 0110…110 進(jìn)行了擴(kuò)展(假設(shè)原來 0 和 1 加起來一共有 170 位,經(jīng)過糾錯(cuò)編碼之后就變成了一共 400 位的 1010…101)。

\

這里需要補(bǔ)充說明的一點(diǎn)是加糾錯(cuò)碼這個(gè)階段不只是讓數(shù)據(jù)量簡(jiǎn)單地增大。

一旦小程序碼的版本、糾錯(cuò)級(jí)別確定了,其對(duì)應(yīng)的糾錯(cuò)碼都是固定的了,這樣解碼階段才能通過對(duì)應(yīng)的規(guī)則去消除糾錯(cuò)碼,把真正有用的數(shù)據(jù)保留下來(回到生熟雞蛋的例子就是只留下生雞蛋,而把熟雞蛋排除掉)。

經(jīng)過信息轉(zhuǎn)換和糾錯(cuò)編碼之后,我們得到一串最終的二維碼序列,就可以把信息按一定的編碼順序填充到小程序碼的編碼區(qū)域(1對(duì)應(yīng)的是黑色,0對(duì)應(yīng)的是白色)。

填充之后我們發(fā)現(xiàn)小程序上花瓣看起來很不均勻,比如下圖

\

 

所以為了讓小程序碼的花瓣看起來更加均衡,需要再多做一步操作。

 

分隔線開始


在此之前,我們先來學(xué)習(xí)一下邏輯異或(XOR,符號(hào)是⊕ )的基本知識(shí),請(qǐng)看下面這個(gè)表格。

\

A ⊕ B ,當(dāng) AB 不等時(shí)值為1,AB 相等時(shí)值為0。A和同一個(gè) B 經(jīng)過兩次異或操作,結(jié)果跟原碼相同(A ⊕  B ⊕  B = A)。

\


分隔線結(jié)束

 

3.掩碼操作

將小程序碼跟 32 種掩膜(又稱mask,可依照一定的規(guī)則生成)進(jìn)行異或運(yùn)算,最終選取效果最佳的作為最終的小程序碼。
 

\

4.功能性數(shù)據(jù)

最后一步是填充功能性數(shù)據(jù),最終效果如下

\

至此,小程序碼就完成了它的綻放過程 :)

獲取小程序碼

根據(jù)小程序官方開發(fā)文檔的說明,目前請(qǐng)求生成一個(gè)小程序碼有兩個(gè)接口(A 和 B),請(qǐng)求生成小程序二維碼有一個(gè)接口(C),這三個(gè)接口有什么區(qū)別呢?

建議大家優(yōu)先使用 B 接口去生成二維碼,一方面是小程序碼始終是比二維碼可辨認(rèn)性高,另一方面沒有數(shù)量限制,而且技術(shù)處理也相對(duì)簡(jiǎn)單。

關(guān)于小程序碼的樣式,現(xiàn)階段我們主要可以定義以下方面的內(nèi)容:

由于目前我們只能定義小程序碼的射線顏色,無法定義整個(gè)小程序碼圖片的背景顏色。所以在聲明小程序碼射線的顏色這一步,主要有兩種思路:

 

微信識(shí)別小程序碼

小程序碼識(shí)別過程跟小程序碼的生成過程是反過來的,大家可以通過簡(jiǎn)單的流程圖來感受一下。

\

 

雖然目前小程序暫時(shí)不支持直接分享到朋友圈,但是越來越多的小程序已經(jīng)通過嘗試將小程序碼與業(yè)務(wù)功能相結(jié)合,生成一張可以在朋友圈傳播的小程序碼,方便其它用戶通過長(zhǎng)按識(shí)別小程序碼直接(從朋友圈)進(jìn)入相應(yīng)的小程序。

\

長(zhǎng)按識(shí)別二維碼(或小程序碼)在微信下是一個(gè)再自然不過的交互了,既然講到這里,就順便跟大家簡(jiǎn)單聊聊長(zhǎng)按識(shí)碼背后的小故事。微信會(huì)根據(jù)不同的場(chǎng)景采取不同的識(shí)別策略,這里主要分為兩類:

1.Webview 下長(zhǎng)按識(shí)別

當(dāng)微信檢測(cè)到用戶長(zhǎng)按識(shí)別的時(shí)候,會(huì)第一時(shí)間把當(dāng)前屏幕截屏,然后去檢測(cè)屏幕截圖是否有小程序碼(或二維碼),如果有,則出現(xiàn)長(zhǎng)按識(shí)別小程序碼(或二維碼)的菜單項(xiàng),點(diǎn)擊該菜單項(xiàng)即可跳轉(zhuǎn)到對(duì)應(yīng)的小程序碼(或二維碼對(duì)應(yīng)的內(nèi)容);反之如果截圖里面沒有小程序碼(或二維碼),又或者小程序碼(或二維碼)圖案不完整,則不會(huì)有識(shí)別結(jié)果。

\

\\

2.圖片查看器下長(zhǎng)按識(shí)別

假設(shè)有人在朋友圈發(fā)送了一張包含小程序碼(或二維碼)的圖片,你點(diǎn)擊預(yù)覽小圖(這時(shí)稱圖片處于圖片查看器中),這個(gè)時(shí)候也是可以長(zhǎng)按識(shí)別的,那這個(gè)時(shí)候就是直接發(fā)圖去識(shí)別!(但不一定是原圖哦,這里的策略是非常非常多的,例如這張圖片非常大,微信就會(huì)先做適當(dāng)壓縮再上傳去識(shí)別的)

\

 

現(xiàn)階段(2017.8)經(jīng)過測(cè)試發(fā)現(xiàn),在普通場(chǎng)景下,只要微信能長(zhǎng)按識(shí)別二維碼,就也同樣能長(zhǎng)按識(shí)別小程序碼;不過在小程序下面,暫時(shí)只支持長(zhǎng)按識(shí)別小程序碼哦,長(zhǎng)按識(shí)別二維碼是不支持的。

 

 

 

最后

感謝大家閱讀到最后,為了表達(dá)我的感激,我決定(再次)把研究過程中遇到過的最好看的小程序碼的圖片分享給大家 :)

\


------------------------------------------------------------------------------------------
藍(lán)點(diǎn)網(wǎng)絡(luò)提供:
網(wǎng)站建設(shè)APP開發(fā)微信小程序400電話、軟件開發(fā)、服務(wù)器托管/租用等業(yè)務(wù)。
從2003年開始,我們始終堅(jiān)守【網(wǎng)站建設(shè)】服務(wù),19年從未放棄!!



售前咨詢:0311-8736 0077 
 

售后服務(wù):0311-8736 0066 
 
值班手機(jī):
189 3198 6878

專注網(wǎng)站建設(shè)19年,服務(wù)客戶超7000家! 售前咨詢:0311-87360077 售后服務(wù):0311-87360066 值班手機(jī):189 3198 6878 早8:00—晚22:00(周一至周日) 在線咨詢