各位同學好,今天又是一個晴空萬里的周末,面對外面這么好的天氣,不好好在家學習怎么對得起外面的這個天氣。
在逛 Github 的時候,發現了一個好玩的二維碼制作的庫:https://github.com/sylnsfar/qrcode 。這個庫的 star 已經超過 7k 了,而且附帶了中文文檔,各位感興趣的同學可以訪問前面那個鏈接為作者點亮一個 star 。
這個庫的介紹是這么寫的:
Python 藝術二維碼生成器 (GIF動態二維碼、圖片二維碼)
先放一個自己的作品,然后我們再來細細拆解這東西怎么做。
上面是小編使用的兩個 gif 動圖生成的兩個二維碼,看起來還是滿炫酷的,那么,這玩意到底是怎么做出來的。
第一步,當然是需要先安裝對應的類庫:
pip install myqr
有一點需要說明下, myqr 目前只支持運行在 python3 的環境下,所以,還在使用 python2 的同學們,你們已經被時代拋棄了。
第二步就是素材准備了,動圖的資源已經提交到代碼倉庫了,小編這里就不貼出來了,當然,想要使用自己喜歡的動圖也是可以的,小編這兩個動圖是來自於自己的肥宅小伙伴(請這位同學自己在評論區報道)。
接下來就是二維碼部分了,首先我們要清楚二維碼本質上記錄了什么。
二維條碼/二維碼(2-dimensional bar code)是用某種特定的幾何圖形按一定規律在平面(二維方向上)分布的、黑白相間的、記錄數據符號信息的圖形;在代碼編制上巧妙地利用構成計算機內部邏輯基礎的“0”、“1”比特流的概念,使用若干個與二進制相對應的幾何形體來表示文字數值信息,通過圖象輸入設備或光電掃描設備自動識讀以實現信息自動處理:它具有條碼技術的一些共性:每種碼制有其特定的字符集;每個字符占有一定的寬度;具有一定的校驗功能等。同時還具有對不同行的信息自動識別功能、及處理圖形旋轉變化點。
上面這段內容是摘自百度百科,如果沒看懂,沒關系,小編用大白話解釋一下:就是使用對應的算法,講信息存儲在了圖形中,本質上我們日常見到的二維碼解碼后都是一串字符串。
既然二維碼是字符串,那就好說了,就拿小編的公眾號二維碼來講,我們如何知道這個二維碼上的字符串到底是什么呢?
做過運營的同學應該對一個網站非常熟悉,草料二維碼:https://cli.im/ 。
在這個網站上,我們可以通過上傳二維碼進行解析,從而得到這個二維碼中的信息。
小編這里上傳下公眾號的二維碼,看下結果:
可以看到,解碼后的結果是一個網址:http://weixin.qq.com/r/Lym2rp7Ev8PArdrN93w9 ,拿到這個網址信息后,我們的准備工作就完成了。
接下來就是使用 myqr 生成我們的動態二維碼了:
from MyQR import myqr
import os
version, level, qr_name = myqr.run(
words="http://weixin.qq.com/r/Lym2rp7Ev8PArdrN93w9", # 可以是字符串,也可以是網址(前面要加http(s)://)
version=1, # 設置容錯率為最高
level='H', # 控制糾錯水平,范圍是L、M、Q、H,從左到右依次升高
picture="3.gif", # 將二維碼和圖片合成
colorized=True, # 彩色二維碼
contrast=1.0, # 用以調節圖片的對比度,1.0 表示原始圖片,更小的值表示更低對比度,更大反之。默認為1.0
brightness=1.0, # 用來調節圖片的亮度,其余用法和取值同上
save_name="4.gif", # 保存文件的名字,格式可以是jpg,png,bmp,gif
save_dir=os.getcwd() # 控制位置
)
對於上面這一小段代碼,小編就不多解釋了,里面的注釋已經寫得很清楚了。
是不是很簡單,當然小編是使用了自己的公眾號二維碼,各位同學也可以使用自己的微信二維碼,使用自己喜歡的動圖,通過上面這一小段代碼,制作一個自己專屬的個人微信二維碼。
本篇文章中使用到的二維碼、動圖以及代碼,都上傳代碼倉庫,有需要的同學請自取。