python3使用myqr生成鏈接二維碼
技術背景
二維碼技術在各個領域中都已經有非常成熟的應用,比如隨處可見的二維碼支付,比如疫情期間的綠碼,再比如工業領域中,可以使用二維碼作為定位的標籤,大大提升了室內定位技術的精確度。二維碼的格式內容大致如下圖所示(圖片來自於參考鏈接2):
有人擔心說,二維碼被頻繁的使用,中國一年要消耗15億以上的二維碼,那麼二維碼會有被用完的那一天嗎?經過參考鏈接2中的計算,如果要使用完所有的二維碼,需要全球70多億的人口每個人消耗\(10^{134}\)個二維碼就可以了,這可比灣灣一天吃18公斤的鳳梨難度大多了。在本文中,我們要介紹使用python程式碼來生成一個專屬的二維碼。
安裝myqr
MyQR
跟其他的python庫一樣,可以通過pip來進行安裝和管理:
[dechin@dechin-manjaro myqr]$ python3 -m pip install myqr
Collecting myqr
Downloading MyQR-2.3.1.zip (16 kB)
Requirement already satisfied: imageio>=1.5 in /home/dechin/anaconda3/lib/python3.8/site-packages (from myqr) (2.9.0)
Requirement already satisfied: numpy>=1.11.1 in /home/dechin/anaconda3/lib/python3.8/site-packages (from myqr) (1.20.1)
Requirement already satisfied: Pillow>=3.3.1 in /home/dechin/anaconda3/lib/python3.8/site-packages (from myqr) (8.0.1)
Building wheels for collected packages: myqr
Building wheel for myqr (setup.py) ... done
Created wheel for myqr: filename=MyQR-2.3.1-py3-none-any.whl size=16668 sha256=21cf0a4fbb5d3208097fd280553ed3437ffa4cc218db528cbb14332336642b8f
Stored in directory: /home/dechin/.cache/pip/wheels/f8/b0/38/01c1fd37a94a2046d4fda17344fbecb454f1a907e8482d6d82
Successfully built myqr
Installing collected packages: myqr
Successfully installed myqr-2.3.1
顯示安裝成功後,就可以開始在本地使用myqr來生成自己的專屬鏈接二維碼了。
生成普通黑白二維碼
首先我們用ipython來生成一個最簡單最基礎的二維碼。使用的方法非常的簡單,只需要配置好myqr.run
中的參數即可。第一個參數words
是代表需要跳轉的鏈接,比如這裡我們將部落格主頁的鏈接作為二維碼的words。第二個參數version
是二維碼的大小,範圍是1到40。更多的參數配置資訊如下圖所示(圖片來自於參考鏈接1):
那麼我們開始演示一個簡單的示例:
[dechin@dechin-manjaro myqr]$ ipython
Python 3.8.5 (default, Sep 4 2020, 07:30:14)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.19.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: from MyQR import myqr
In [2]: myqr.run(words='//www.cnblogs.com/dechinphy/',version=9,save_name='mainpage.png
...: ',save_dir='/home/dechin/projects/2021-python/myqr')
line 16: mode: byte
Out[2]: (9, 'H', '/home/dechin/projects/2021-python/myqr/mainpage.png')
在這個示例中我們只配置了鏈接、大小、存儲名稱和存儲地址。其中存儲地址可以查看pwd
指令的返回結果:
[dechin@dechin-manjaro myqr]$ pwd
/home/dechin/projects/2021-python/myqr
然後將這個當前目錄的絕對路徑作為最終的存儲地址。執行完myqr.run
之後,會在本地生成一個png文件:
[dechin@dechin-manjaro myqr]$ ll
總用量 4
-rw-r--r-- 1 dechin dechin 1751 4月 16 10:40 mainpage.png
該文件的內容為:
生成靜態圖片背景的二維碼
這裡我們用頭像的圖片作為一個背景圖片:
然後需要在上述的程式碼中修改一些配置資訊,比如讀取的picture
名稱和存儲名稱(避免存儲覆蓋)等:
In [3]: myqr.run(words='//www.cnblogs.com/dechinphy/',version=9,picture='1.png',coloriz
...: ed=True,save_name='mainpage_withgraph.png',save_dir='/home/dechin/projects/2021-pytho
...: n/myqr')
line 16: mode: byte
Out[3]: (9, 'H', '/home/dechin/projects/2021-python/myqr/mainpage_withgraph.png')
執行完成後生成的二維碼效果如下:
生成動態圖背景的二維碼
原理和使用方法跟上一個章節是一樣的,只是把picture
的參數配置為一個動態gif圖,當然,由於我們希望輸出的二維碼也是一個動態效果圖,因此在輸出的格式中也要對應的配置為gif格式。由於部落格限制不能上傳10M以上大小的圖片,這裡我們找了一張小一點的gif動態圖作為背景(圖片來源於網站):
對應的配置python程式碼如下:
In [4]: myqr.run(words='//www.cnblogs.com/dechinphy/',version=9,picture='bishi.gif',col
...: orized=True,save_name='mainpage_withgif.gif',save_dir='/home/dechin/projects/2021-pyt
...: hon/myqr')
line 16: mode: byte
Out[4]: (9, 'H', '/home/dechin/projects/2021-python/myqr/mainpage_withgif.gif')
gif動態圖的處理和生成時間也會比靜態圖長很多,需要耐心的等待。經過一段時間的處理後,會在本地生成這樣的一張二維碼:
題外話
其實配合之前的部落格中所介紹的,通過python來生成Android程式的方法,我們可以將生成二維碼的這個功能製作成一個簡單的app以供移動端的日常使用。但是這裡我們重點還是介紹二維碼生成的方法,而且已經有很多在線的免費的二維碼生成器可以使用,因此暫不展開實踐。用在線生成器生成的二維碼效果如下:
同時,有二維碼生成器那麼就有二維碼的解碼器,比如這個在線二維碼解碼器,效果如下:
總結概要
二維碼技術在日常生活和工業應用中都擔任著非常重要的角色,這裡我們可以使用python的myqr來生成個性化的二維碼,比如帶圖片背景的二維碼,或者是動態背景的二維碼。經過測試,用微信掃碼都成功的識別了出來,也就是說這些二維碼都是可以直接拿來使用的。當然,現在技術都已經非常成熟,所以有很多線上的免費的二維碼生成器可以使用,配套的也有二維碼解碼器,可以將生成的二維碼翻譯成文字。
版權聲明
本文首發鏈接為://www.cnblogs.com/dechinphy/p/myqr.html
作者ID:DechinPhy
更多原著文章請參考://www.cnblogs.com/dechinphy/