<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          python 一行命令生成二維碼

          共 1417字,需瀏覽 3分鐘

           ·

          2020-04-28 23:23

          現(xiàn)在我們幾乎每天都在使用二維碼,添加個朋友,支付個費(fèi)用,登錄個網(wǎng)站等等都使用到了二維碼,你會不會有時候在想,為什么對方不給你二維碼掃一下,加個好友呢?






          哦,不是,你會不會有時候在想,為啥每一張看似差不多的二維碼圖片,里面都承載了各式各樣的信息呢?又如何使用 Python 去生成自己想要的二維碼呢?

          那么接下來,就是:



          學(xué)習(xí) Python 的正確姿勢

          c2906cb9894d481671fbc6228b823a22.webp




          先來簡單說下,其實每一張二維碼,都可以看成是一種數(shù)據(jù)的加密,在這里面的數(shù)據(jù),可以通過某種編碼,轉(zhuǎn)化成黑白不同的點(diǎn),然后按順序排列其中。


          b1874349b1dcc0371371f70bc02505d8.webp




          當(dāng)我們?nèi)プR別二維碼的時候,其實就是把這些數(shù)據(jù)轉(zhuǎn)化回來。

          有時候你會發(fā)現(xiàn)二維碼把它打歪,也能照常識別:





          這是因為有定位的標(biāo)識,比如這上面的三個大方塊就是用來定位的。


          有時候你也會發(fā)現(xiàn),有些二維碼看起來比較簡單,而有的卻很復(fù)雜的樣子:







          這要取決于不同的輸入數(shù)據(jù)編碼類型,版本,以及糾錯級別。

          其中版本分 1-40 個級別,版本越高,能存儲的數(shù)據(jù)就越多,用公式來表示就是這樣:vx4+17 。

          而糾錯級別又分為 L、M、Q、H,有時候你可能看到有些二維碼整的花里胡哨,或者有的地方缺失了還是能被識別,這可能是這張二維碼的容錯級別比較高。
          而級別越低,糾錯能力越低,但是能存儲更多的數(shù)據(jù)。所以一個二維碼,最大可以有 177x177 個矩陣,也就是第 40?版本,而糾錯級別是最 low 的哪一個。
          40x4 + 17:



          8fac20a1e3b057b9733740e5c45f79d4.webp





          b7cd89687363635b60a729613d3416e3.webp



          而這些格式信息,都可以在三個大方塊的邊沿定義,然后剩下的區(qū)域就是來放數(shù)據(jù)碼和糾錯碼的,你可以把每個小方塊看成一個 bit,0 代表白色, 1 代表黑色。
          那如果有些地方很多 1 ,不就都特么黑了么?這時候還需要用掩碼來掩一下黑黑的地方,這樣才有利于機(jī)器的識別。

          恩,可能你已經(jīng)被我整懵了。



          2bfca16c63916d14da392b13ad0c64e5.webp


          沒關(guān)系,如果你想知道二維碼的更多細(xì)節(jié),可以看看這一篇:https://en.wikipedia.org/wiki/QR_code

          知道了二維碼這么幾個東東之后,我們接下來玩玩 Python 生成二維碼和識別吧。
          有一個 qrcode 庫生成二維碼很是方便,可以使用 pip 先安裝一下:
          pip install qrcode

          ubutnu 可以使用 apt install:

          sudo apt install python3-qrcode

          接著就可以直接使用 qr 命令來生成二維碼了:




          一行命令就搞定啦,是不是賊方便,當(dāng)然,如果你要定義一些復(fù)雜一些的,比如定義我們剛剛說的糾錯級別,版本等,我們可以導(dǎo)入 qrcode 這個庫,然后你可以自己寫幾行代碼定義一下:



          090ba520bc4500c7ab313c6cff675863.webp




          運(yùn)行一波:








          剛剛我們說了,二維碼可以容錯,所以可以讓它變得花里胡哨一些,比如小帥b公眾號中文末常留下的這玩意:


          14f04624d54e6fcf5e39d5eaa77d76f6.webp

          掃一掃

          學(xué)習(xí) Python 沒煩惱





          把它們?nèi)诤掀饋砜梢允沁@樣的:





          變成彩色也是可以的:






          而這,也是可以使用一行命令實現(xiàn):


          f2df0fe21d81b0d38f702b0bb81b25cf.webp



          這里用到的是 myqr 的庫,其中 -v 可以指定二維碼版本,-l 指定糾錯級別, -c 可以顯示彩色二維碼, -n 可以指定生成的二維碼名稱。
          像我剛剛那樣生成的二維碼,只需要一個地址,一張 gif ,然后通過這樣的命令就可以實現(xiàn)了:


          c439ad795aed4312d33e5d9cd9e5de60.webp



          如果你想識別二維碼的話,可以使用 pyzbar 來實現(xiàn)。
          比如有這么一張二維碼:






          可以通過 opencv 讀取這張圖片,然后使用 pyzbar 進(jìn)行解碼:




          fb306df7ef296f1b356d728a0473f9e6.webp



          ok,以上就是小帥b今天給你帶來的分享,希望對你有幫助,我們下回見,peace!



          點(diǎn)擊留言



          瀏覽 77
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本免费看黄 | 黄色大片免费在线观看 | 亚洲AV成人漫画无码精品网站 | 18禁免费观看网站 | 一级欧美性爱视频 |