說到二維碼大家一定不陌生,,可以說現(xiàn)在二維碼幾乎滲透到了我們生活的各個角落,,舉例來說吧,我們到超市商場購物時掃描二維碼付款,,我們出行時乘坐公交地鐵掃描二維碼進(jìn)站,,我們到菜鳥驛站取件時掃描二維碼取件,如果哪天我們碰到一個有趣的人,,可能還會微信掃描二維碼加個好友,,如果你閱讀我們的文章感覺對自己有一點幫助,還可以掃描文末二維碼關(guān)注一下我們的公眾號,。 我們通過 Python 生成以及識別二維碼需要用到的庫為:qrcode,、myqr,、zxing,安裝通過 二維碼結(jié)構(gòu)首先,,我們來簡單了解一下二維碼的結(jié)構(gòu),如下圖所示: 從圖中我們可以看出二維碼結(jié)構(gòu)整體劃分為功能圖形和編碼區(qū)兩大部分,,功能圖形又細(xì)分為:空白區(qū),、位置探測圖形、位置探測圖形分隔符,、定位圖形,、校正圖形,而編碼區(qū)細(xì)分為:格式信息,、版本信息,、數(shù)據(jù)和糾錯碼字,來簡單了解一下每一部分的功能:
生成二維碼創(chuàng)建二維碼我們可以使用 qrcode 和 myqr 兩個 Python 庫,下面來具體看一下,。 qrcode生活我們可能會看到一些二維碼,,在我們掃描之后跳到了某個地址,這樣的功能 qrcode 就可以實現(xiàn),,來看一下示例: import qrcode
# 二維碼內(nèi)容(鏈接地址或文字) data = 'https://www.baidu.com/' # 生成二維碼 img = qrcode.make(data=data) # 顯示二維碼 img.show() # 保存二維碼 # img.save('qr.jpg') 看一下效果: 我們掃描上面這個二維碼就可以跳轉(zhuǎn)到我們設(shè)置的地址了,。 上面的二維碼比較原始,我們還可以對其進(jìn)行簡單的設(shè)置和美化,,代碼實現(xiàn)如下所示: import qrcode
''' version:二維碼的格子矩陣大小,,可以是 1 到 40,1 最小為 21*21,,40 是 177*177 error_correction:二維碼錯誤容許率,,默認(rèn) ERROR_CORRECT_M,容許小于 15% 的錯誤率 box_size:二維碼每個小格子包含的像素數(shù)量 border:二維碼到圖片邊框的小格子數(shù),,默認(rèn)值為 4 ''' qr = qrcode.QRCode( version=2, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=15, border=3, ) # 二維碼內(nèi)容 data = 'https://www.baidu.com/' qr.add_data(data=data) # 啟用二維碼顏色設(shè)置 qr.make(fit=True) img = qr.make_image(fill_color='blue', back_color='white') # 顯示二維碼 img.show() 看一下效果: myqr如果我們對上面生成二維碼的樣式不滿意,,我們就需要用到 myqr 庫了,它不僅可以生成普通二維碼,,還可以生成帶圖片的二維碼以及動態(tài)二維碼,但我們想要查看生成的二維碼時,,需要到保存位置手動打開查看,。 普通二維碼我們先使用 myqr 來生成一個普通二維碼,看一下示例: from MyQR import myqr
''' words:內(nèi)容 version:容錯率 save_name:保存的名字 ''' myqr.run(words='https://www.baidu.com/', version=1, save_name='myqr.png') 看一下效果: 帶圖二維碼我們接著使用 myqr 來生成一個帶圖的二維碼,,看一下示例: from MyQR import myqr
''' picture:生成二維碼用到的圖片 colorized:False 為黑白,,True 為彩色 ''' myqr.run(words='https://www.baidu.com/', version=1, picture='bg.jpg', colorized=True, save_name='pmyqr.png') 看一下效果: 動態(tài)二維碼最后,,我們使用 myqr 來生成一個動態(tài)二維碼,看一下示例: from MyQR import myqr
myqr.run(words='https://www.baidu.com/', version=1, picture='my.gif', colorized=True, save_name='myqr.gif') 看一下效果: 解析二維碼 |
|