• <style id="gwrdi"><kbd id="gwrdi"></kbd></style>
      摸金校尉之九幽将军电影免费播放,女士邀请函电影,黑暗荣耀第二季第五集30分25秒,高清维珍朋克:发条女孩未删减,课外授业3在线,五福临门免费观看全集电视剧,告白动漫剧在线播放,金瓶梅迅雷下载地址
      Previous Next

      二維碼生成原理及解析代碼

      添加時間:2019-11-11 21:15:28

      來源:

      瀏覽:

      二維碼生成原理及解析代碼

      自從大街小巷的小商小販都開始布滿了騰訊爸爸和阿里爸爸的二維碼之后,我才感覺到我大天朝共享支付的優(yōu)越性。最近畢業(yè)論文寫的差不多了,在入職之前多學(xué)一些東西也是好的。這里秉著好奇心,研究一下二維碼的生成,并嘗試性寫一個二維碼解析源碼。


      注:暫時只有二維碼原理,筆者這段時間會持續(xù)研究解析代碼,并隨進(jìn)度持續(xù)更新。

      參考網(wǎng)址: 

      《二維碼的生成細(xì)節(jié)和原理》 

      《QR Code Tutorial》 

      《Hello World!》—— 知乎專欄文章 

      《為程序員寫的Reed-Solomon碼解釋》


      一. 二維碼基本知識

      二維碼另一個名稱是QR Code(Quick Response Code),近年來在移動設(shè)備上經(jīng)常使用,與傳統(tǒng)條形碼相比,可以存儲更多的信息。二維碼本質(zhì)上是個密碼算法,基本知識總結(jié)如下。 

      首先,二維碼存在 40 種尺寸,在官方文檔中,尺寸又被命名為 Version。尺寸與 Version 存在線性關(guān)系:Version 1 是 21×21 的矩陣,Version 2 是 25×25 的矩陣,每增加一個 Version,尺寸都會增加 4,故尺寸 Size 與 Version 的線性關(guān)系為:


       Size=(Version?1)×4

      Size=(Version?1)×4

      Version 的最大值是 40,故尺寸最大值是(40-1)*4+21 = 177,即 177 x 177 的矩陣。


      二維碼結(jié)構(gòu)如下圖 1.1 所示: 


       

      圖1.1 二維碼結(jié)構(gòu) 

      二維碼的各部分都有自己的作用,基本上可被分為定位、功能數(shù)據(jù)、數(shù)據(jù)內(nèi)容三部分。


      定位圖案: 

      Position Detection Pattern, 定位圖案:用于標(biāo)記二維碼矩形的大小;用三個定位圖案即可標(biāo)識并確定一個二維碼矩形的位置和方向了;

      Separators for Position Detection Patterns, 定位圖案分割器:用白邊框?qū)⒍ㄎ粓D案與其他區(qū)域區(qū)分;

      Timing Patterns, 時序圖案:用于定位,二維碼如果尺寸過大,掃描時容易畸變,時序圖案的作用就是防止掃描時畸變的產(chǎn)生;

      Alignment Patterns, 對齊圖案:只有在 Version 2 及其以上才會需要;

      功能數(shù)據(jù): 

      Format Information, 格式信息:存在于所有尺寸中,存放格式化數(shù)據(jù);

      Version Information, 版本信息:用于 Version 7 以上,需要預(yù)留兩塊 3×6 的區(qū)域存放部分版本信息;

      數(shù)據(jù)內(nèi)容:剩余部分存儲數(shù)據(jù)內(nèi)容 

      Data Code, 數(shù)據(jù)碼;

      Error Correction Code, 糾錯碼;

      二. 數(shù)據(jù)編碼

      2.1 數(shù)據(jù)編碼信息

      二維碼的數(shù)據(jù)編碼信息如下圖 2.1, 2.2 中的列表所示: 


       

      圖2.1 模式編號指示器 


       

      圖2.2 字符計數(shù)指示器中的位數(shù) 

      上圖 2.1 中,展示的是二維碼支持的數(shù)據(jù)編碼模式。 

      注:其中中文編碼模式為 1101;


      上圖 2.2 中展示了不同版本(即不同尺寸)的二維碼,單個編碼對應(yīng)二進(jìn)制的位數(shù)。 

      注:二維碼規(guī)格說明書中,存在各式各樣的編碼規(guī)范表;


      圖2.1, 2.2 表格具體含義,在后面的例程中會具體講解。


      2.2 數(shù)據(jù)編碼形式

      2.2.1 數(shù)字編碼(Numeric Mode)

      數(shù)字編碼的范圍為 0~9。 

      對于數(shù)字編碼,統(tǒng)計需要編碼數(shù)字的個數(shù)是否為 3 的倍數(shù):如果不是 3 的倍數(shù),則剩下的 1 位或 2 位會被轉(zhuǎn)為 4bits 或 8bits(十進(jìn)制轉(zhuǎn)二進(jìn)制),每三位數(shù)字都會被編成 10bits, 12bits, 14bits,具體編碼長度仍然需要二維碼尺寸決定。


      2.2.2 字符編碼(Alphanumeric Mode)

      字符編碼的范圍有:


      數(shù)字 0~9;

      大寫 A~Z(無小寫);

      幾個符號$ % * + - . / 和空格。

      上述字符映射為一個索引表,如下圖 2.3 所示: 


      圖2.3 字符映射索引表 

      圖中 Char 表示字符,Value 表示字符對應(yīng)的索引值。 

      索引表中共 45 種對應(yīng)關(guān)系,字符編碼的過程,就是將每兩個字符分為一組,然后轉(zhuǎn)成上圖 2.3 的 45 進(jìn)制,再轉(zhuǎn)為 11bits 的二進(jìn)制結(jié)果。對于落單的一個字符,則轉(zhuǎn)為 6bits 的二進(jìn)制結(jié)果。 

      此外,根據(jù)上圖 2.2 的設(shè)定,對不同 Version 的二維碼使用 9/11/13 個二進(jìn)制表示。


      注: 

      上圖 2.3 中的 SP 代表空格。


      2.2.3 字節(jié)編碼(Byte Mode)

      可以是 0-255 的 ISO-8859-1 字符。有些二維碼的掃描器可以自動檢測是否是 UTF-8 的編碼。


      2.2.4 日文編碼(Kanji Mode)

      日文編碼同時也是雙字節(jié)編碼,同樣也可以用于中文編碼。 

      日文與中文編碼流程基本相似:


      首先減去一個值;

      挑出差值結(jié)果的前兩個 16 進(jìn)制,乘以 0xC0;

      加上后兩個 16 進(jìn)制位;

      轉(zhuǎn)為 13bits 編碼;

      按照日文編碼集 SHIFT_JIS為參照,可查詢?nèi)瘴淖址膶?yīng)編碼。以“雅”與“芒”為例,轉(zhuǎn)換過程如下圖 2.4 所示: 


       

      圖2.4 日文編碼流程展示 

      2.2.5 其他編碼

      其他類型的編碼本文中不詳細(xì)說明。其中包括:


      特殊字符集(Extended Channel Interpretation Mode):主要用于特殊的字符集,并不是所有的掃描器都支持這種編碼;

      混合編碼(Structured Append Mode):說明該二維碼中包含了多種編碼格式;

      特殊行業(yè)編碼(FNC1 Mode):主要是給一些特殊的工業(yè)或行業(yè)用的,如GS1條形碼等;

      2.3 數(shù)據(jù)編碼示例說明

      分別用一個數(shù)字編碼與字符編碼的示例,說明數(shù)據(jù)編碼的過程:


      2.3.1 例程1:數(shù)字編碼

      問題:對于 Version 1 尺寸的二維碼,糾錯級別為 H,編碼為:01234567 

      解析步驟:


      將上述數(shù)字分為三組:012, 345, 67;

      查詢圖 2.2 表格內(nèi)容,Version 1 二維碼的數(shù)字編碼應(yīng)轉(zhuǎn)換為 10bits 的二進(jìn)制數(shù)字,故將上面三組數(shù)字轉(zhuǎn)為二進(jìn)制分別為:012→0000001100, 345→0101011001, 67→1000011;

      將三個二進(jìn)制串連接起來:0000001100 0101011001 1000011;

      將數(shù)字的個數(shù)轉(zhuǎn)成二進(jìn)制:對于數(shù)字編碼,數(shù)字長度依舊用圖 2.2 表格中查到的 10bits 二進(jìn)制數(shù)字來表示,數(shù)字共有 8 個,故數(shù)字個數(shù)的二進(jìn)制形式為:8→0000001000;

      查詢圖 2.1 表格內(nèi)容,數(shù)字編碼的標(biāo)志為 0001,將編碼標(biāo)志與步驟 4 編碼結(jié)果加到步驟 3 結(jié)果之前,故最終結(jié)果為:0001 0000001000 0000001100 0101011001 1000011

      2.3.2 例程2:字符編碼

      問題:對于 Version 1 尺寸的二維碼,糾錯級別為 H,編碼為:AE-86 

      解析步驟:


      在圖 2.3 的字符索引表中分別找到 AE-86 五個字符的索引分別為:(10, 14, 41, 8, 6);

      將五個字符兩兩分組:(10, 14) (41, 8) (6);

      字符編碼應(yīng)將字符組轉(zhuǎn)換為 11bits 的二進(jìn)制,故上述三組字符首先轉(zhuǎn)為 45 進(jìn)制后再轉(zhuǎn)為二進(jìn)制: 

      (10, 14):轉(zhuǎn)為 45 進(jìn)制:10×45+14=464;再轉(zhuǎn)為 11bits 的二進(jìn)制:00111010000;

      (41, 8):轉(zhuǎn)為 45 進(jìn)制:41×45+8=1853;再轉(zhuǎn)為 11bits 的二進(jìn)制:11100111101;

      (6):轉(zhuǎn)為 45 進(jìn)制:6;再轉(zhuǎn)為 6bits 的二進(jìn)制:000110;

      將步驟 3 中得到的三個二進(jìn)制結(jié)果連接起來:00111010000 11100111101 000110;

      查詢圖 2.2 表格內(nèi)容,Version 1 二維碼的字符個數(shù)應(yīng)轉(zhuǎn)換為 9bits 的二進(jìn)制數(shù)字,對于 5 個字符,二維碼字符個數(shù)轉(zhuǎn)為 9bits 二進(jìn)制為:000000101;

      查詢圖 2.1 表格內(nèi)容,字符編碼的標(biāo)志為 0010,將編碼標(biāo)志與步驟 5 編碼結(jié)果加到步驟 4 結(jié)果之前,故最終編碼結(jié)果為:0010 000000101 00111010000 11100111101 000110;

      三. 結(jié)束符與補(bǔ)齊符

      對于結(jié)束符和補(bǔ)齊符,我們直接舉例進(jìn)行說明。 

      問題:對于 Version 1 尺寸的二維碼,糾錯級別為 H,以筆者的英文名作為編碼:CHANDLERGENG 

      按照 2.3.2 字符編碼例程進(jìn)行分析,得到編碼如下:


      編碼 字符數(shù) CHANDLERGENG 的編碼

      0010 000001101 01000101101 00111011001 01001011110 01010010001 01011011110 10000011011

      3.1 結(jié)束符

      在需要在對于上述字符的編碼,需要在最后加上結(jié)束符。結(jié)束符為連續(xù) 4 個 0 值。加上結(jié)束符后,得到的編碼如下:


      編碼 字符數(shù) CHANDLERGENG 的編碼 結(jié)束

      0010 000001101 01000101101 00111011001 01001011110 01010010001 01011011110 10000011011 0000

      如果所有的編碼加起來不是 8 的倍數(shù),則還需要在后面加上足夠的 0。如上面一共有 83bits,所以與 8 的倍數(shù)還相差兩位,故在最后加上 5 個 0,上表最終的數(shù)據(jù)變?yōu)椋?nbsp;

      00100000 01101010 00101101 00111011 00101001 01111001 01001000 10101101 11101000 00110110 00000000


      3.2 補(bǔ)齊符

      如果最后還沒有達(dá)到我們最大的 Bits 數(shù)限制,則需要在編碼最后加上補(bǔ)齊符(Padding Bytes)。 

      補(bǔ)齊符內(nèi)容是不停重復(fù)兩個字節(jié):11101100 和 00010001。這兩個二進(jìn)制轉(zhuǎn)成十進(jìn)制,分別為 236 與17,具體不知道為什么選這兩個值……關(guān)于每一個Version的每一種糾錯級別的最大Bits限制,可以參看 QR Code Spec 的第35頁到44頁的 Table-7 一表(筆者參考的是《ISO/IEC 18004》2000版),大致如下圖 3.1 所示:



       

      圖3.1 二維碼糾錯級別的最大Bits限制(部分) 

      上圖 3.1 中提到的 codewords,可譯為碼字,一個碼字是一個字節(jié)。對于 Version 1 的 H 糾錯級別,共需要 26 個碼字,即 104bits。現(xiàn)在加上用 0 補(bǔ)全的結(jié)束符,已經(jīng)有了 88bits,故還需要補(bǔ)上 16 bits。補(bǔ)齊后的編碼為:


      00100000 01101010 00101101 00111011 00101001 01111001 01001000 10101101 11101000 00110110 00000000 11101100 00010001


      以上數(shù)據(jù)即為數(shù)據(jù)碼(Data Codewords)。


      四. 糾錯碼

      前文提到了不同的糾錯級別(Error Correction Code Level)。有了糾錯機(jī)制,才可以使得有些二維碼有了殘缺也可以掃碼解析出來,才可以使得二維碼中心位置可以供某些商家加上對解析不必要的圖標(biāo)。 

      二維碼一共有四種糾錯級別:


      糾錯水平 可被修正容量

      L 7% 碼字

      M 15% 碼字

      Q 25% 碼字

      H 30% 碼字

      二維碼對數(shù)據(jù)碼加上糾錯碼的過程,首先要對數(shù)據(jù)碼進(jìn)行分組,即分成不同的塊(Block)。參看如上圖 3.1 所示 QR Code Spec 的第35頁到44頁的 Table-7 中的最下方說明了分組的定義表:



       

      圖4.1 二維碼糾錯級別說明(部分) 


      對于表中的最后兩列的內(nèi)容:

      糾錯塊個數(shù)(Number of error correction blocks):需要劃分糾錯快的個數(shù);

      糾錯塊碼字?jǐn)?shù)(Error Correction Code Per Blocks):每個塊中的碼字個數(shù),即有多少個字節(jié)Bytes;

      表中最下面關(guān)于 (c,k,r) 的解釋:


      c:碼字總個數(shù);

      k:數(shù)據(jù)碼個數(shù);

      r:糾錯碼容量

      注:


      c,k,r的關(guān)系公式:c=k+2×rc=k+2×r。

      糾錯碼容量小于糾錯碼個數(shù)的一般

      以上圖 4.1 中的 Version 5 + H 糾錯機(jī)為例:圖中紅色方框說明共需要 4 個塊(上下行各一組,每組 2 個塊)。


      第一組的屬性:


      糾錯塊個數(shù) = 2:該組中有兩個塊;

      (c, k, r) = (33, 11, 11):該組中每個塊共有 33 個碼字,其中 11 個數(shù)據(jù)碼, 11×2=22 個糾錯碼;

      第二組的屬性:


      糾錯塊個數(shù) = 2:該組中有兩個塊;

      (c, k, r) = (34, 12, 11):該組中每個塊共有 34 個碼字,其中 12 個數(shù)據(jù)碼, 11×2=22 個糾錯碼;

      具體示例如下表所示,且由于使用二進(jìn)制會使得表格過大,故轉(zhuǎn)為范圍在 0~255 的十進(jìn)制。其中組 1 的每個塊,都有 11 個數(shù)據(jù)碼, 22 個糾錯碼;組 2 的每個塊,都有 12 個數(shù)據(jù)碼,22 個糾錯碼。


      數(shù)據(jù) 每個塊的糾錯碼

      1


      2 67 85 70 134 87 38 85 194 119 50 6 


      66 7 118 134 242 7 38 86 22 198 199 199 11 45 115 247 241 223 229 248 154 117 236 38 6 50 17 7 236 213 87 148 235 


      177 212 76 133 75 242 238 76 195 230 189 106 248 134 76 40 154 27 195 255 117 129

      2


      2 247 119 50 7 118 134 87 38 82 6 134 151 


      194 6 151 50 16 236 17 236 17 236 17 236 96 60 202 182 124 157 200 134 27 129 209 182 70 85 246 230 247 70 66 247 118 134


      173 24 147 59 33 106 40 255 172 82 2 157 242 33 229 200 238 106 248 134 76 40

      二維碼的糾錯碼主要是通過里德-所羅門糾錯算法(Reed-Solomon Error Correction)實(shí)現(xiàn)的。


      (關(guān)于 Reed-Solomon 算法,現(xiàn)在此處占坑,回頭研究了再寫上去)


      五. 最終編碼

      此時得到了數(shù)據(jù),但還不能開始畫圖,因?yàn)槎S碼還需要將數(shù)據(jù)碼與糾錯碼的各個字節(jié)交替放置。


      5.1 穿插放置

      繼續(xù)以第四章中給出的示例為例,給出其穿插放置的過程。


      5.1.1 數(shù)據(jù)碼穿插放置

      第四章示例中的數(shù)據(jù)碼如下表所示:


      塊數(shù)

      塊1 67 85 70 134 87 38 85 194 119 50 6

      塊2 66 7 118 134 242 7 38 86 22 198 199

      塊3 247 119 50 7 118 134 87 38 82 6 134

      塊4 194 6 151 50 16 236 17 236 17 236 17

      提取每一列數(shù)據(jù):


      第一列:67, 66, 247, 194;

      第二列:85, 7, 119, 6;

      ……

      第十一列:6, 199, 134, 17;

      第十二列:151, 236;

      將上述十二列的數(shù)據(jù)拼在一起:67, 66, 247, 194, 85, 7, 119, 6,…, 6, 199, 134, 17, 151, 236。


      糾錯碼如下表所示:


      塊數(shù)

      塊1 199 11 45 115 247 241 223 229 248 154 117

      塊2 177 212 76 133 75 242 238 76 195 230 189

      塊3 96 60 202 182 124 157 200 134 27 129 209

      塊4 173 24 147 59 33 106 40 255 172 82 2

      同樣的方法,將 22 列數(shù)據(jù)放在一起:199, 177, 96, 173, 11, 212, 60, 24, …, 148, 117, 118, 76, 235, 129, 134, 40。


      上述部分即為二維碼的數(shù)據(jù)區(qū)。


      5.2 剩余位 (Remainder Bits)

      對于某些 Version 的二維碼,得到上面的數(shù)據(jù)區(qū)結(jié)果長度依舊不足,需要加上最后的剩余位。比如對于 Version 5 + H 糾錯等級的二維碼,剩余位需要加 7bits,即加 7 個 0。參看 QR Code Spec 的 Table-1 一表即可查詢不同 Version 的剩余位信息,如下圖 5.1 所示:



       

      圖5.1 不同 Version 的剩余位 

      六. 二維碼的繪制

      終于講到二維碼繪制過程了,繪制的過程按照順序?qū)D 1.1 中各個重要部分依次講解。


      6.1 定位圖案 (Position Detection Pattern)

      首先在二維碼的三個角上繪制定位圖案。定位圖案與尺寸大小無關(guān),一定是一個 7×7 的矩陣。如下圖 6.1 所示:



       

      圖6.1 定位圖案 (Position Detection Pattern) 

      6.2 對齊圖案 (Alignment Pattern)

      然后繪制對齊圖案。對齊圖案與尺寸大小無關(guān),一定是一個 5×5 的矩陣。如下圖 6.2 所示:



       

      圖6.2 對齊圖案 (Alignment Pattern) 

      對齊圖案繪制的位置,可參看 QR Code Spec 的 Table-E.1 一表查詢,部分內(nèi)容如下圖 6.3 所示:



       

      圖6.3 對齊圖案位置索引表(部分) 

      下圖 6.4 是上述表格中 Version 8 的一個例子,對于 Version 8 的二維碼,行列值在 6, 24, 42 的幾個點(diǎn)都會有對齊圖案。



       

      圖6.4 對齊圖案例程 1 

      下圖 6.5 是最近我老媽慫恿我用支付寶搶紅包時給我發(fā)來的二維碼,該二維碼中只有一個對齊圖案, 故 Version 應(yīng)在 V2——V6 之間。



       

      圖6.5 對齊圖案例程 2 

      6.3 時序圖案 (Timing Pattern)

      時序圖案是兩條連接三個定位圖案的線,如下圖 6.6 所示: 


       

      圖6.6 時序圖案例程 1 

      依舊拿支付寶紅包的二維碼為例,其時序圖案如圖 6.7 所示:



       

      圖6.7 時序圖案例程 2 



      6.4 格式信息

      格式信息如下圖 6.8 所示: 


       

      圖6.8 格式信息 

      格式信息在定位圖案周圍分布,由于定位圖案個數(shù)固定為 3 個,且大小固定,故格式信息也是一個固定 15bits 的信息。每個 bit 的位置如下圖 6.9 所示:(注:圖中的 Dark Module 是固定永遠(yuǎn)出現(xiàn)的)



       

      圖6.9 格式信息位置 

      15bits 中數(shù)據(jù),按照 5bits 的數(shù)據(jù)位 + 10bits 糾錯位的順序排列:


      數(shù)據(jù)位占 5bits:其中 2bits 用于表示使用的糾錯等級 (Error Correction Level),3bits 用于表示使用的蒙版 (Mask) 類別;

      糾錯位占 10bits:主要通過 BCH Code 計算;

      為了減少掃描后圖像識別的困難,最后還需要將 15bits 與 101010000010010 做異或 XOR 操作。因?yàn)槲覀冊谠袷叫畔⒅锌赡艽嬖谔嗟?0 值(如糾錯級別為 00,蒙版 Mask 為 000),使得格式信息全部為白色,這將增加分析圖像的困難。


      糾錯等級的編碼如下圖 6.10 的表格所示:



       

      圖6.10 糾錯等級編碼 

      關(guān)于蒙版圖案的生成,在后文 6.7 中具體說明。格式信息的示例如下:


      假設(shè)存在糾錯等級為 M(對應(yīng) 00),蒙版圖案對應(yīng) 000,5bits 的數(shù)據(jù)位為 00101,10bits 的糾錯位為 0011011100: 

      則生成了在異或操作之前的 bits 序列為:001010011011100 

      與 101010000010010 做異或 XOR 操作,即得到最終格式信息:100000011001110


      6.5 版本信息 (Version Information)

      對于 Version 7 及其以上的二維碼,需要加入版本信息。如下圖 6.11 藍(lán)色部分所示:



       

      圖6.11 版本信息 

      版本信息依附在定位圖案周圍,故大小固定為 18bits。水平豎直方向的填充方式如下圖 6.12 所示:



       

      圖6.12 版本信息填充方式 

      18bits 的版本信息中,前 6bits 為版本號 (Version Number),后 12bits 為糾錯碼 (BCH Bits)。示例如下:


      假設(shè)存在一個 Version 為 7 的二維碼(對應(yīng) 6bits 版本號為 000111),其糾錯碼為 110010010100; 

      則版本信息圖案中的應(yīng)填充的數(shù)據(jù)為:000111110010010100


      6.6 數(shù)據(jù)碼與糾錯碼

      此后即可填充第五章得到的數(shù)據(jù)內(nèi)容了。填充的思想如下圖 6.13 的 Version 3 二維碼所示,從二維碼的右下角開始,沿著紅線進(jìn)行填充,遇到非數(shù)據(jù)區(qū)域,則繞開或跳過。



       

      圖6.13 二維碼數(shù)據(jù)填充(原始版) 

      然而這樣難以理解,我們可以將其分為許多小模塊,然后將許多小模塊串連在一起,如下圖 6.14 所示(截取自 QR Code Spec 的圖 15):




      圖6.14 二維碼數(shù)據(jù)填充 

      小模塊可以分為常規(guī)模塊和非常規(guī)模塊,每個模塊的容量都為 8。常規(guī)情況下,小模塊都為寬度為 2 的豎直小矩陣,按照方向?qū)?8bits 的碼字填充在內(nèi)。非常規(guī)情況下,模塊會產(chǎn)生變形。 

      填充方式上圖 6.14,圖中深色區(qū)域(如 D1 區(qū)域)填充數(shù)據(jù)碼,白色區(qū)域(如 E15 區(qū)域)填充糾錯碼。遍歷順序依舊從最右下角的 D1 區(qū)域開始,按照蛇形方向(D1→D2→…→D28→E1→E2→…→E16→剩余碼)進(jìn)行小模塊的填充,并從右向左交替著上下移動。下面給出若干填充原則:


      原則 1:無論數(shù)據(jù)的填充方向是向上還是向下,常規(guī)模塊(即 8bits 數(shù)據(jù)全在兩列內(nèi))的排列順序應(yīng)是從右向左,如下圖 6.15所示;



       

      圖6.15 常規(guī)模塊內(nèi)的填充方向 

      原則 2:每個碼字的最高有效位(即第7個bit)應(yīng)置于第一個可用位。對于向上填充的方向,最高有效位應(yīng)該占據(jù)模塊的右下角;向下填充的方向,最高有效位占據(jù)模塊的右上方。 

      注:對于某些模塊(以下圖 6.17 為例),如果前一個模塊在右邊模塊的列內(nèi)部結(jié)束,則該模塊成為不規(guī)則模塊,且與常規(guī)模塊相比,原本填充方向向上時,最高位應(yīng)該在右上角,此時則變?yōu)樽笙陆牵?nbsp;

      原則 3:當(dāng)一個模塊的兩列同時遇到對齊圖案或時序圖案的水平邊界時,它將繼續(xù)在圖案的上方或下方延續(xù); 

      原則 4:當(dāng)模塊到達(dá)區(qū)域的上下邊界(包括二維碼的上下邊界、格式信息、版本信息或分隔符)時,碼字中任何剩余 bits 將填充在左邊的下一列中,且填充方向反轉(zhuǎn);如下圖 6.16 中的兩個模塊遇到了二維碼的上邊界,則方向發(fā)生變化;



       

      圖6.16 非常規(guī)模塊填充方向的改變(舉例于 QR Code Spec 圖 13) 

      原則 5:當(dāng)模塊的右一列遇到對齊圖案,或遇到被版本信息占據(jù)的區(qū)域時,數(shù)據(jù)位會沿著對齊圖案或版本信息旁邊的一列繼續(xù)填充,并形成一個不規(guī)則模塊。如果當(dāng)前模塊填充結(jié)束之前,下一個的兩列都可用,則下一個碼字的最高有效位應(yīng)該放在單列中,如下圖 6.17 所示:



       

      圖6.17 模塊單列填充 

      6.7 蒙版圖案

      按照上述思路即可將二維碼填充完畢。但是那些點(diǎn)并不均衡,如果出現(xiàn)了大面積的空白或黑塊,掃描識別會十分困難,所以按照在前文 6.4 中格式信息的處理思路,對整個圖像與蒙版進(jìn)行蒙版操作(Masking),蒙版操作即為異或 XOR 操作。 

      二維碼又 8 種蒙版可以使用,如下圖 6.18 所示,公式也在圖中說明。蒙版只會和數(shù)據(jù)區(qū)進(jìn)行異或操作,不會影響與格式信息相關(guān)的功能區(qū)。 

      注:選擇一個合適的蒙版也是有一定算法的。


      蒙版圖案如下圖 6.18 所示,對應(yīng)的產(chǎn)生公式與蒙版 ID 如下圖 6.19 的表格所示:



       

      圖6.18 蒙版圖案 


       

      圖6.19 蒙版圖案產(chǎn)生公式

      蒙版操作的過程與對比圖如下圖 6.20 所示,圖中最上層是沒有經(jīng)過蒙版操作的原始二維碼,其中存在大量黑色區(qū)域,難以后續(xù)的分析識別。經(jīng)過兩種不同蒙版的處理,可以看到最后生成的二維碼變的更加混亂,容易識別。 


       

      圖6.20 蒙版操作示例 

      蒙版操作之后,得到的二維碼即為最終我們平常看到的結(jié)果。


      七. 源碼

      筆者原本準(zhǔn)備用 C++ 與 OpenCV 寫一個二維碼解析程序,現(xiàn)在學(xué)了二維碼的原理后,發(fā)現(xiàn)好難。另外網(wǎng)上關(guān)于二維碼解析與生成的程序基本都是用 Python 寫的,筆者又想找個合適機(jī)會學(xué)習(xí)一下 Python,所以這段時間就準(zhǔn)備從二維碼入手,學(xué)習(xí)一下 Python 的基礎(chǔ)~


      源碼及解析筆者會隨學(xué)習(xí)的進(jìn)度持續(xù)更新~


      八. 后記

      筆者學(xué)習(xí)完畢二維碼內(nèi)容后不禁感嘆,二維碼規(guī)則的制定當(dāng)真是凝聚了多少研究者的心血。學(xué)無止境,在知識的海洋中,當(dāng)真是需要抱著敬畏之心和謙卑的態(tài)度,才能體會到這片海洋的浩瀚。 

      ————————————————



      noet 自定義字段

      相關(guān)內(nèi)容

      ——
      11

      2019-11

      二維碼生成原理及解析代碼

      二維碼生成原理及解析代碼自從大街小巷的小商小販都開始布滿了騰訊爸爸和阿里爸爸的二維碼之后,我才感覺到我大天朝共享支付的優(yōu)越性。最近畢業(yè)論文寫的差不多了,在入職之前多學(xué)一些東西也是好的。這里秉著好奇心,研究一下二維碼的生成,并嘗試性寫一個二維碼解析源碼。注:暫時只有二維碼原理,筆者… [了解更多]

      ? ?
      上海驍唐智能科技有限公司是一家專業(yè)從事條碼掃描器、條碼打印機(jī)、標(biāo)簽耗材、數(shù)據(jù)采集等智能識別應(yīng)用系統(tǒng)的高科技條碼物聯(lián)網(wǎng)企業(yè)。提供Datalogic得利捷、Mindeo民德、Newland新大陸、Honeywell霍尼韋爾等條碼掃描器,數(shù)據(jù)采集器,條碼打印機(jī)等條碼設(shè)備及條碼掃描器軟件下載、條碼打印機(jī)維修、條碼管理系統(tǒng)。驍唐專注于新零售和智能制造等的發(fā)展,有自己獨(dú)立的掃描器品牌同時也是眾多國際知名自動識別設(shè)備廠商的戰(zhàn)略合作伙伴。

      地 址:中國(上海)自由貿(mào)易試驗(yàn)區(qū)臨港新片區(qū)平港路883-885號1幢

      郵政編碼:201411

      電 話:13761963296

      郵 箱:847098433@qq.com

      投訴郵 箱:info@xtvu.com

      主站蜘蛛池模板: 封神英雄榜第二部72集完整版| 坎贝奇第二部曲《品味人生》免费观看| 陆贞传奇电视剧59| 空间神医农女:医术惊天下全集免费| 快意恩仇| 空蝉之森手机免费观看| 超级警车动画片全集| 渺渺兮予怀| 韩国电影售楼部的女销售| 河南男子与猪结婚引争议| 正在播放: DRPT-048 春药曝露性爱 仓田真央带乳头导线与前女友相见 十年来同 | 遮天 全集| 《堕落的女律师》HD中字 | 乌鲁木齐县| 追梦就冲突事件道歉| 善意的竞争电视剧免费观看| 斗罗大陆213集| 电视剧《父与子》| 朱音落语| 小蜜峰美丽人生| 银魂174| 后妈韩剧| 阿拉伯电影绝色在线观看免费| 高清九条的大罪未删减| 城市猎人韩剧高清完整版在线观看| 卖乐迪女超人| 《爱情回来了》电视剧| 王小虎陈晶晶短剧2022年| 喜爱夜蒲3尺度吸乳| 霍比特人 百度影音| 《玉女心经3:阴阳和合》免费观看完整版| 我的老婆大人是80后| 现在我们相爱吗| 超人麦乐迪在线观看中文版高清 | 西田麻衣种子| 伊波拉病毒2国语在线观看完整版| 满江红免费完整版在线观看| 狄仁杰第四部全集| 安拉拉斋主演的电影在线观看免费| 八千里路云和月电视剧在线观看| 影碟机维修| 灰姑娘满天星版在线观看| 终极笔记在线高清免费观看| 恋恋不忘的我们综艺免费观看| 把儿媳妇变成花痴了第二季全集 | 监狱风云之传教士| 锵锵锵锵锵锵锵免费观看完整版大全 | 法国式禁忌结局1-4| 屈原电视剧全集免费观看| 贤者之爱 豆瓣| 一起愁愁愁30分钟电视剧免费观看电视| 《杀破狼2》在线播放| 医武双绝:弃少超神短剧全集| 女儿的复仇的啄木鸟续集| 太极2:英雄崛起| 都市桃花运| 瓜达卢佩的玫瑰观看完整版| 50岁阿姨观看电视剧日本| 中国可能减7000亿美债| 越南姑娘500元排毒的电影| 老师我想你日本高清观看视频| 白燕升个人演唱会| 好兄弟的女友| 鬼片电影林正英| 致命武器4国语| XL司令在线观看完整版动漫 | 灭火宝贝2美版免费播放| 乡村爱情第8部| 星梦缘优酷| 妈妈的职业5在线观看免费完整版电视剧全集高清 | 今夜无人入睡免费观看第7集| 《私人女性监狱》HD| 那年花开月正圆 电视剧| 千金小姐电影在线完整版免费观看 | 金银梅5普通版在线观看免费| 临终千言| 功夫粤语高清免费| 花蝴蝶4电视剧在线播放免费观看| 舞出我人生4高清| 三国传动画片| 公的浮中字9| 开学第一课直播2021| 极限挑战大电影下载| 天使与龙的轮舞动漫免费| 星迷宫克莱尔| 新还珠格格高清在线观看| 张涵予天星术免费播放| 金星 离婚| 成全动漫观看免费高清| 北上电视剧在线观看全集免费播放| 高清落叶球| 《激战丛林》完整版在线观| 爱情猎杀在线观看免费高清完整泰剧| 谁在你背后| 《女兵俘虏营》越南版在线看| 小伙子爱上隔壁女邻居电视剧| 亲爱的麻洋街电视剧免费观看| 韩四少妇特殊精油按摩高潮不断 | 苏北民间小调| 西班牙电影《火腿火腿》| 《妻子去加班的夜》中文翻译| 凉婚薄爱 千亿总裁求放过| 哆啦a梦电影国语| 喜羊羊之灰太狼之决战次时代| 哈尔滨市| 三生三世十里桃花电视| 源代码在线观看| 电视剧千山暮雪| 《人民的名义2》| 欲海情魔无删减完整版在线播放| 播求训练| 《妻子做社长签署偿还债务| 小公主苏菲亚第四季免费观看| 无上魔尊短剧免费播放| 女超人麦乐迪在线云播放 | 地下美人电影完整版| 新婚和部长出差高清观看| 河神在线观看| 鸣梁海战电影免费观看国语| 新员工2在线观看完整版电影| 美女神枪手| 墨缘太极纯音乐加长版| 《荣誉守则》成人版| 星游记全集| 尖峰时刻 3| 《Overflower》动漫第一季在线观看 | 巜出轨上司的人妻2中字| 情越海岸线粤语版| 杰森鲁夫满天星电影合集| 我的丑娘续集| flypaper苍蝇陷阱| omoflow第一季真人免费| 黑三角电影下载| 虎胆龙威5高清国语| 《激战丛林》| 金牌调解全集| 清宫性史之名妓风流| 电影《意大利夫人》在线观看 | 万湖会议| 大独裁者| 牙医姐妹在线观看免费普通话版| 电影泰山| 熊出没之过年2部| 哇嘎| 高清《淑女》电视剧| 饥渴人妻出轨记(NPH)| 《酒店服务生》完整版免费观看 | 杨光的爱情故事下载| 纳粹疯淫史| 电影美容室的特殊待遇7 | 沉迷公5全集在线观看免费| 如意芳霏在线观看| 同在屋檐下电视剧全集在线观看 | 《火花》电影| 玛多县| 怒战狂心| 维斯塔小镇家长会2免费观看| 恐龙 2000 电影| 屈辱的婚纱奴隷花嫁1~2集| 女机器人下载| 《南京照相馆》完整版在线观看| 空蝉之森在线播放| 侣行攻略之确认你是我的人| 日威电推剪| 我的特一营下载| 轧戏电视剧演员表| 幻日的伊甸园| 激情燃烧的岁月主题曲| 一起来看流星雨电视剧| 精灵梦叶罗丽2| 坎贝奇品味人生完整版免费| 关于我们之间的事| 战狼6免费高清版999加拿大版动漫 | 国产白嫩漂亮美女在线观看| 台剧《浪漫女家教》在线观看| 罗曼史剧情| 小call 宅之小恶魔| 法国空乘13完整版| 咸蛋超人全集| 中国好声音直播现场| 特警犬王电影| 混血儿的摇篮曲电影未删减版| 特殊精油按摩3电影| 台湾电影黛比系列之女家教在线观看 | 与夫上司愉情的妻子在线观看| 神雕侠侣在线观看| 人口9万人小县城单日游客过万| 时间静止器电影完整版| 侦探成旭3| 电视剧孤舟免费观看全集高清| 翻斗鞋柜的安装视频| 印度空姐2免费高清完整版观看 | 《卢旺达的玫瑰》完整版| 飞船奇遇记| 81号档案| xl司令第一季无马赛免费观看,正版| 电影荞麦疯长完整版在线观看| 激战丛林电影| 小唐璜情史完整电影免费观看高清| 美国电影《炸天小姐》| 下载甄嬛传全集| 冲上云霄2大结局是什么| 浑源县| 贵妃还乡在线观看| 看见你的棒棒就想吃的歌手是谁| 彼得格尔的贤者时间| 色九月在线| 龙年档案电视剧26集免费观看| 沙漠神枪| 人狗大战8集全集观看免费西瓜| 《招魂4:终章》| 鹰隼大队电视剧| 闪婚后1-100集免费看| HD版《人猿泰山H版》完整版意大利| 绝色美人谋短剧在线观看全集| 家教培训满天星电影在线观看满天星 | 牙医姐妹在线免费观看视频| 乔布斯 吸毒| 怪盗基德的结局| 凌云壮志满天星法版免费观看| 步步杀机 电视剧| 野兽电影完整版| 庆余年46集资源| 爱你陈芳语| 老婆5| 年轻的妹妹| 我和房东| 起床了小澈| 美人心计全集在线观看| 抗癌平丸| 《性的暴行》无删减版电影| 变形金刚真人版电影| 红色之山| 请问护士俄剧满天星| 我的老婆是小学生| 死亡笔记迅雷下载| 花嫁高柳家1-6集免费观看| 电影大追捕| 左右不逢源第四季| 电视剧罪域| 富裕县| 新生在线观看电视剧免费| 世界因你温柔短剧免费完整版| 小两口免费观看全集| 曹云金官场斗| 《特殊的房租》中文| 新乌龙山剿匪记免费观看完整版| 军事不当行为| 来福大酒店免费观看完整版| 电影《关于她的五段感情》1| 我最亲爱的 李致贤| 成全高清动漫在线看| 我在截取一段视频特工| 水润女人申胜业刘志贤主演角色介绍 | 黄花大闺女下集免费观看| 韩国电影修理工艳遇| 罗莉凶猛| 新员工入职秘书2| 我在情人截取了一段小视频| 不文女学堂 蒙嘉慧| 男男少年乖H调教跪趴SM主| 樱桃在线观看免费全集高清完整| 人妻初次按摩2在线观看| 高清菜肉馄饨未删减| 爱我几何莫妮卡原版免费观看| 温柔女教师在线观看电视剧大全| 敢死队 qvod| 美姊妹牙医完整版在线观看| 唐宫美人天下全集| 对不起 我爱你| 《法国空乘5》在线免费观看| 魔角侦探| 度华年全40集免费观看| 法国空姐2024| 黑帮少爷爱上我 第七集| 农民伯伯下乡2国语版百度云电影| 毒爱泰剧| 大湾仔的夜免费观看| 逃犯入室暴行电影免费播放| 庆余年22集| 毛东东现任职务简历| 仁心解码| tobu8XXⅩHD| 美版咒怨1| 水月洞天2| 战狼6高清国语免费观看影视大全下载什么借钱平台好的 | 星光灿烂电视剧| 电影殊死搏斗免费观看高清| 熊出没之年货全集| 《执行秘书》2016| 偷窥无罪2| 连诗雅三级| 菠萝菠萝蜜在线免费观看| 领导挺进娇妻身体| 理伦片驯服小峓子3| 电视剧折腰免费观看在线播放| 瓜达卢佩的玫瑰无删版| 延禧攻略洪尧| 电影双胞胎在线观看| 《兄弟换麦子6国语版1080P》bd影视免费在线观看 - 云端影库 | 方形人战斗剧场| 《小唐璜情史》| 黑人大巨茎大战欧罗斯两白妞| 骑骑上司妻| 电视剧借枪全集免费播放完整版| 坎贝奇在线观看完整| 田震最新歌曲| 湖南男子捅杀3人| 又见一帘幽梦优酷 | 欲火之路| 壮志凌云女版啄木鸟满天星法版| 黑衣人国语高清| 甄嬛传在线观看免费版全集| 就是闹着玩的| 售楼小姐的秘密完整版| 大奉打更人电视剧观看| 宝贝在线观看| 哇嘎免费观看在线播放| 九尾狐传说| 逛新城简谱| 想要爸爸播种子在线观看| 命中注定我爱你剧情介绍| 星克莱尔《豪门贵妇》在线观看 | 杨柳夺拳击女子66公斤级银牌| 假面骑士艾克赛德全集观看免费中文| 白月梵星花絮| 霜花店韩国电影观看完整版| 冯提莫干爹| 1995版《泰山和珍妮》| 张本煜回怼男观众称“大清亡了”| 变形计他乡有爱| 甜蜜蜜免费| 女超人的羞辱麦乐迪| 四海盟约 毛阿敏| 鹿鼎记2神龙教下载| 爱我几何《莫妮卡》电影完整版在线| 妖精的尾巴剧场版2| 车水马龙电影免费版| 耿马| 年轻的母亲韩国在线| 禁忌4年转一| 王者好气啊| 猿人星球纪录片| 韩剧妈妈爱上儿子同学| 赤身之约第一集免费观看| 大兵的寝室在线观看| 欢乐颂第一季免费观看| 五福星系列| 搏击之王之反击电影完整版免费观看| 当幸福来临时| 坎贝奇的品味人生在线看| 星际传奇3高清| 《品味人生》在线观看完整版高清 | 美女搜查官| 悬崖1到40集免费观看| 一门三司令全集38| 双乳丰满的女学生电影| 仓鼠管家| 整蛊王国语版在线观看| 双j恋吧| 妹妹有点怪真人演员全集| 新金瓶梅下百度影音| 艾薇儿girl friend| 《需要爸爸播种子》HD免费在线播放 - 全集电影 - 金鸿影视 | 痴电汉5| 虎贲万岁| 女超人麦乐迪未删减季免费观看 | 裂缝百度影音| 春雨电视剧在线观看全集免费| 公与3个媳HD免费看| 遗失的爱| 画皮之真爱无悔大结局| 母亲3韩剧国语版| 有菜电影| 报告老师怪怪怪怪物| 乐队的夏天第三季在线观看| 超级鲨大战机器鲨| 铿铿铿锵锵锵锵高清免费观看 | 我的另一面土耳其电视剧| 儿媳的味道| 《需要爸爸播种子》在线观看播放_HD/无删减_免费高清电影 - 星辰影院 | 黄花大闺女下集免费观看 | 登陆之日电影| 建议取消强制自动续费 | 公之浮手中字5| 真假面骑士| 《双人按摩调情术》在线播放| 父亲的爱情| 乡村爱情2电视剧免费| 偶像大师好看吗| 胖子视界| 《黑暗森林》莱娜安德森| 极速恋人中泰剧14集特别篇| 上错花轿嫁对郎在线观看| 小小之少女16| 女子户卫队,满天星| 《澳门风云3》电影| 向东是大海百度影音| 黑白配免费播放高清完整版| 一个好妈妈7中字头强华驿货拉拉价格 | 电影灵与肉| 电视剧娘家的故事3| 稀奇古怪玩具批发| 《桃色凶器》| 侏罗纪世界3免费观看完整版| 人体蜈蚣3 电影| 梦想的声音 综艺| 动漫男女一起愁愁愁观看全集| 思凡mv| 英雄虎胆免费完整版| 比特铃手机diy大师| 《倔强驱魔师》1-4集在线观看免费视| 我的行囊| 蝴蝶效应1| 无遮挡动漫在线观看| 售楼小姐的秘密| 千年血战篇| 阹贞传奇| 电视剧女婿难当| 铿锵铿锵铿锵免费观看| 禁忌的边界线| 歼灭天际线1—40| 映山红歌谱| 肥臀艳母| 扑克 电影| 花儿与少年6免费观看| 布衣神相| 女员工的付出中字1230| 唐诗三百首一共有多少首诗| 禁忌-3结局| 乌云之上电视剧全集剧情| 艺校女学生滋味1~10| 妻子6免费的电视剧完整版| 《姊妹牙医》完整版正片| 喜爱夜蒲2 完整版| 《壮志凌云女版》(法国版)| 降魔的2.0| 法国满天星《行政助理》 | 向流星许愿的我们未删减| 落花时节又逢君| 泽塔奥特曼剧场版| melody 女超人在线| 儿媳妇的| 苍井空巨乳教师线观看| 17·3国语版在线播放| 沐浴之王在线| 日本版红楼梦| 和讨厌的部长一起去出差旅电影在线观看 | 粉色大白菜(法国)完整板| 小东解说dota| 韩剧漂亮的妈妈中字开头字| 范马刃牙第三季| 送上司回家,看到上司老婆| 高清直到黎明未删减| 几度菊花香电视剧免费观看完整版| 生死决断秋瓷炫完整版未删减| 西出玉门电视剧免费看| 娘亲舅大电视剧全集免费观看| 灭火行动在线观看免费| 万物生长| 白鹿原电视剧完整版| 《行政助理》完整版| 凤凰卫视一虎一席谈| 罗马帝国艳情史 下载| 海上钢琴师 斗琴| 《娃娃脸》4| 韩剧四十九天| 美国黑白配在线观看免费| 漂亮的保姆韩国高清| 觉醒2012| 涩谷二十四小时| 郝板栗电影无删减版| 咒怨1日版| 再见莫妮卡电影在线播放免费观看| 清潭国际高中第一部| 《急诊护士》法国版电影在线观看 | 新婚夫妇隔帘精油按摩使用方法| 游戏王gorush| 高压监狱2完整版在线观看| 越战猎鹿人| 名捕震关东电视剧全集免费观看| 同学的母亲中字id息子| 母亲5免费高清电视| 浦安铁筋家族| 法国私人助理1982年| 五月天黄色小说| 《哪吒之魔童降世》电影| 雪中悍刀行50全集观看第二季| 四川不能自家杀猪| 爱有几何莫妮卡无删减版| 插翅难飞豆瓣| 激情从来| 星辰变第四季| 韩国电影空房子| 正在播放: JUL-927 “对不起,我受不了了……”我对儿子的朋友好色……北条朝 | 一步之遥字幕下载| 秋蝉电视剧全集免费观看| 速度与激情8免费在线观看| 坎贝奇作品《品味人生》| 至尊弃少都市:无人敢惹短剧全集| 极道之恋| 天使的胆量:高中生| 女性私人监狱| 女员工付出的中字1230| 《萌萌妈妈》动漫第3集| 现世因果教育| 关中匪事| 壮志凌云女版满天星在线观看完整免费高清 | 《捕风追影》| 秋瓷炫生死决断在线观看| 国王在冬眠免费观看| 一闪一闪亮晶晶 电视剧| 老公的春天21| 碟中谍3在线观看完整高清免费版| 抬花轿豫剧| 诱人的小峓子4中文字幕| 好事多磨19楼| 巴南区| ssni-780| 巨人的进击| 女版战狼6| 无人高清电影电视剧在线| 少年骇客过火海| 早恋电影| 眼泪知道 温岚| 法国电影爱我几何| face gossip安卓版| 非凡医者电视剧免费观看| 德川幕府刑罚史记水月篇完整版| 城中城电视剧40集免费| 柜中美人 电视剧| melody和爸爸的电影| 白夜破晓第二季在线观看免费| 初恋50次在线观看| 电影卖房女销售的电影叫什么| 铁马寻桥粤语| 马龙县| 爱妻电影网| 贝兹旅馆| 人体蜈蚣| 灯草和尚qvod| 《女律师的堕落》高清 _正在播放_爱情片 - 如如影视 | 牙医姐妹电影完整版| 向前吧少年| 藏海花电视剧免费| 和部长一起出差旅的日子电影| 江湖兄弟电视剧| 糖果盒子| 图书馆女友第一季全集免费六集| 大叔爱上小姑娘韩剧| 法医秦明之读心者免费看| 浮之手中字免费版| 联手复仇虐渣:双胞胎姐妹短剧全集| 素鸡豆腐| 莫妮卡爱我几何完整版在线| 半夜凌晨三点看的电影| 赤子板栗牙医在线观看 | 大陆渔船金门外海翻覆5人落海 | 全球最让人害羞的时装比赛| 日本2018色视频| 女神宿舍的宿官君| 嘉鱼县| 电影绝命速递| g20峰会电影在线观看完整版| 雪mm倒立| 龙胆虎威4下载| 私人女性监狱电视剧全集免费观看| 扫黑风暴电视剧免费观看全集| 《聊斋之鬼狐》完整版| 樱桃红了第二部| 4个少妇按摩| 韩剧《我的女友》免费观看| 我妻子的妈妈双字ID免费| 姐脱你看| 意外来客| 《高压监狱2| 花花电影| 剃刀边缘电视剧全集| 隆子县| 双人高潮按摩在线观看免费高清版| 张本煜回怼男观众称“大清亡了”| 吉娜 维尔德| 拜托请爱我动漫在线观看| 战狼6免费高清| 布鲁克读大学满天星电影免费观看2019 | 灭火宝贝2美版| 养个妹妹做老婆| 徐步高枪击案| 黄色仓库| 敌特在行动在线观看| 小三泪dj| 爱你像心跳难动短剧免费观看| 陷入了我们的热恋| 密室大逃脱第二季| 售楼小姐的秘密 在线播放电影| 黑白禁区电视剧免费全集观看 | 天美影院免费看高清电视剧| 完美新娘电视剧| 弃女重生:邪王追妻全集免费| 女超人电影法国| 金钱帝国粤语版| 《姐妹新娘》全集观看| 还珠格格哪一年开始播的| 法国伦理高压监狱2| 抖音官网网页版| 权宠电视剧免费观看全集高清| 春草电视剧全集完整版免费播放| 交个朋友的直播间| 星际迷航之复仇女神| 韩剧《无法抗拒的你》全集| 四肢无力肌肉酸痛| 黑暗侵袭1| 暴躁老妈国语免费看第三季| 维纳斯vs魔人| 向风而行电视剧免费观影| 一仆二主连续剧免费播放下载| 法国女超人麦乐迪在线播放免费观看 | 圣特罗佩姑娘们免费观看| 动感之星269集小玲| 年轻人电影在线观看| 隋唐英雄111| 霍比特人主题曲| 猎毒者电影| 详情: JUL-945 在没有丈夫的平日里,我被打工归来的无与伦比的岳父强奸,直到我 | 大生意人40集全免费观看| 电视剧只有你| 斗罗大陆免费观看视频| 食物链删除的片段原声| 丝瓜视屏| 电视剧刘老根三部全集2019| 与鬼同眠| 《爱我几何》免费中文版| 狄仁杰断案传奇全集| 世界欠我一个初恋在线播放| 金牌销售的秘密3HD免费观看| 使徒行者23| 恋上你的床下载| 四十九日·祭电视剧免费播放| 女朋友的妺妺HD| 公公与儿媳电影| 女超人满天星麦乐迪| 吴健农民伯伯下乡2中文配音免费观看 | 密宗双修每天四次| 超级经纪人在线观看| 寿阳县| 脱逃天海冀在线观看免费| 活佛济公三全集| 《灯草和尚》| 别墅轮换5攻略完整版免费| 幻想万华镜2| 遍地书香| 妈妈在等你免费完整版电视剧| 需要爸爸的种子HD| 好日子在线观看免费完整版视频| 电视剧恋人| 热思思电影全部免费播放电视剧下载| 凶间疑影| 电锯人免费观看完整版| 《法国空少》电影| 黛比浪漫女家教全集| 破地狱高清无删减粤语| 猫屎妈妈粤语20| 地下交通站第一部28集下载| 心跳源计划在线观看| 高压监狱2019满天星法版免费播放| 丑闻2 电影| 日历女孩 韩国| 敢死队1| 原振侠全集| 強暴強姦女兵v∧正片| 西班牙电影掌中之物在线播放| 三名宇航员都死亡| 死神来了4高清版在线观看| 惊声尖叫3| 芭比美人鱼历险记国语版| 调情按摩电影| 爱情进化论| 轮回的花瓣全集观看| 世界奇闻怪事图片| 当我飞奔向你电视剧免费观看高清| 战狼6免费观看高清| 动漫xlx| 《杉杉来了》免费观看| 泰剧国语版全集| 灌篮高手2023年电影版在线看| 心战电影百度影音| 战狼6欧美少女免费版| 东北恋哥电影高清完整免费观看| 开心鬼放暑假| 陀枪师姐2| 黑大佬的365天无删除完整翻译| 渔夫的妻子意大利| 越南满天星超大尺电眼影 | 人猿泰山真人版1995年在线 | 三级片替夫还债| 公公给儿媳妇的礼物| 阿甘正传免费| 电视剧幸福生活万年长| 忘年恋曲无删减版| 公主回来了国语版| 3对1在线观看中文字幕| 高清《哺乳》电影完整版观看免费 | 交换温度4| 灰姑娘电影| 少林寺传奇4| 女兵排电视剧全集| 《销售秘密2》在线观看中文| 魔境仙踪中文版| 远远的爱结局| 电视剧爱本无罪| xxxx69| 徐少强版金玉梅完整版免费观看| 鬼父ova| 第五元素| 女友成双第二季| 斗罗大陆206集免费观看| 《村枝》雨晴剧情| 妙手房术欧洲版免费观看方法| 搞笑一家人第一部| 凡尘称尊:仙帝弃少全集免费| 有翡在哪个卫视播出| 鉴宝女王:古玩称霸完整版观看| 法国少女农场在线看| 暮海情深泰剧 电视剧在线观看| 网球王子真人| 斗罗大陆148集| 《满意度》在线| 《美国灭火宝贝2》演员表介绍 | 黄yyid频道| 啄木鸟影片| 俄罗期。巨屌影院| 爱我几何免费完整观看电影| 创造营2024在哪里看| 电影《师生别恋》免费观看| 啦啦队舞蹈教学| 爱他就去追| 三年在线观看高清免费| 《急诊护士》在线播放| 奔月演员表| 上书房电视剧| 韩国综艺runningman| 脱裤子打板子| 《医生的特殊治疗》5| 小小水蜜桃6[电视剧]在线观看| 太平轮在线观看| 电视剧扫毒全集在线观看| 庆余年第二季免费观看西瓜| 家门的荣光央视版| 私人航空未删减版在线观看免费 | 狂野时代未删减| 致命追踪剧情介绍| 修真带娃:奶爸人生全集免费| 《偿还2》免费观看完整版| 越狱全集| 薛平贵与王宝钏47| 为了爱离开你| 疯狂厨房| 引爆流行| 坎贝奇无憾140分免费看| 俘虏之锁在线观看完整版| 神马电影达达免第九院| 枭起青壤免费观看| 利刃出鞘3未删减| 我的野蛮王妃下载| 《高压监狱2》完整免费| 《情事》莫妮卡无删减版| 美丽姑娘免费高清电影大全| 刘智贤《瑜伽教室》| 秒速5厘米全集观看| 室内瑜伽2在线播放| 漂亮书生免费播放| 张警官免费完整版在线观看| 张惠妹演唱会2013| 泡沫爱情电视剧| 博士枪杀导师:3年间父母先后去世| 马龙被疑打假球| 《丛林肉搏》电影| 女战狼10国语原版高清 | 淘情公寓| 电影《心动》| 八戒网剧8免费国语| 少女木马责罚| 梦境之树| 浮之手3| 凯登·克罗斯全集| 美国电影免费看| 秀逗魔导士第四部| 别墅轮换4攻略免费观看电视剧| 电视剧长河落日免费观看完整版| 母亲电视剧免费观看完整版| 白峰电影在线播放观看| 梦回鹿鼎记电视剧| 僵尸先生2| 想一个人死去| 暴躁46集在线观看免费高清正版| 高清《我的砍价女王》电视剧| 南方人吃冻梨削皮看傻东北网友| 印度人看中国高铁| 还珠格格天上人间| 金银悔1到5免费观看| 动感妖精205集| 永不妥协| 君九龄免费观看| 灭门惨案之孽杀电影| 苍兰诀观看完整版全集| 朋友的闺蜜ID中字| 《爱我几何》高清完整版在哪看| 免费热门总裁短剧| 阿尔梅洛| 掌心里的海| 科学怪妓在线观看| 急速飞车电影| 朴亚珍《隐身帽子》原版| 换伴5免费观看完整版| 陆小凤张智霖版| 活佛济公三全集| 狂暴之路| 尼格买提复盘穿帮过程| 《替夫还债妻子》大结局| 电影私人航空完整版播放| 原始战争未删减| 长安二十四计在线观看| 有形的翅膀mv| 陆鸣短剧40集免费播放| 马上天下| 乳荡的小痍子2| 《over flow》真人版| 顿悟的意思| 诡探前传| 少年派2全集免费观看完整版高清 赘婿在线观看完整版 | 大牛影库战狼6观看免费 | 小马宝莉之小马国女孩| 《裸体新闻》在线观看| 电视剧梦中的那片海| 公之浮之12| 保险推销员电影| 男生女生向前冲2023| 短剧妥协完整版在线播放| 春潮烂漫海棠红| 81号档案| 极越汽车倒闭了吗| 《激战丛林》意大利版演员| 《妽妽的丰满大胸》1| 杀戮天使第二季| 肌肉男被割胸肌| 美酒加咖啡dj| 巴西人与禽发生性行为的后果| 宁波电视台幸福来敲门| 金珠恩满天星三部曲免费观看| 女战狼10国语原版高清 | 电视剧闪耀的她免费观看全集高清|