您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家?guī)碛嘘P使用Python怎么生成并解析二維碼,文章內容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
生成二維碼的話,python有兩個第三方模塊:qrcode和MyQR可以幫我我們生成二維碼,下面來看一下這兩個模塊的用法。
生成比較簡單的二維碼就是,當我們掃描的時候,會自動跳轉到某個頁面。
import qrcode # 調用QRCode,可以接收以下參數(shù) """ version: 二維碼的格子大小,可以是1到40。值越大,格子越大,一般不超過10,選擇3比較合適 error_correction: 二維碼錯誤容許率,默認為qrcode.constants.ERROR_CORRECT_M,容許小于 15% 的錯誤率 此外還有qrcode.constants.ERROR_CORRECT_L: 容許小于 7% 的錯誤率 qrcode.constants.ROR_CORRECT_H: 容許小于 30% 的錯誤率 box_size: 二維碼每個小格子包含的像素數(shù)量 border: 二維碼到圖片邊框的小格子數(shù),默認值為 4 """ qr = qrcode.QRCode() # 事實上里面的參數(shù)我們可以都不指定,默認會選擇一個比較合適的參數(shù) # 調用add_data,指定url。 qr.add_data("https://www.baidu.com/") # 生成二維碼圖像,顏色為藍色,背景色為粉色 img = qr.make_image(fill_color='blue', back_color='pink') # 顯示圖像,這個會打開一個臨時文件 img.show() # 此外,我們還可以保存到硬盤上 img.save("1.png") # 事實上,這個img實際上是通過PIL模塊得到的,可以理解為里面Image對象 # 如果你熟悉PIL模塊的話,那么你應該知道可以將里面Image對象保存成圖片對應的字節(jié)流 from io import BytesIO buf = BytesIO() img.save(buf) # 將字節(jié)保存到buf里面 with open("2.png", "wb") as f: f.write(buf.getvalue()) # 和直接保存為1.png是一樣的
MyQR也可以用來生成二維碼,但是它和qrcode相比最大的特點就是它可以嵌入圖片當背景。
from MyQR import myqr # 主要用到以下幾個參數(shù) # words:文本,可以是一個鏈接,或者你想說的話(不支持中文,很不友好) # picture:你用到的圖片,作為背景,不然只是一個光禿禿的二維碼 # colorsize:True,表示生成彩圖 # save_name:表示生成的二維碼的名字 myqr.run(words="http://www.bilibili.com", picture="satori.jpg", colorized=True, save_name="bilibili.png")
我們除了可以使用python生成二維碼,還可以解析二維碼,解析二維碼也有兩個模塊,一個是zxing、一個是pyzbar。
首先是zxing,不過這個模塊有點讓人尷尬,因為這個模塊調用的是java的接口。也就是說解析二維碼的底層工作是java做的,python是負責調用,所以使用這個模塊的時候需要你本地有java環(huán)境。所以我使用我阿里云上的centos進行測試。
>>> import zxing >>> reader = zxing.BarCodeReader() >>> barcode = reader.decode('bilibili.png') >>> barcode.parsed 'http://www.bilibili.com' # 是可以解析出來的 >>>
然后看看pyzbar模塊,這個模塊就不需要java了,直接使用python即可。
import numpy as np from PIL import Image from pyzbar import pyzbar # 讀取文件,轉成數(shù)組 im = np.array(Image.open("bilibili.png")) print(pyzbar.decode(im)) # 返回的信息還是很多的 """ [ Decoded(data=b'http://www.bilibili.com', type='QRCODE', rect=Rect(left=35, top=35, width=263, height=264), polygon=[Point(x=35, y=35), Point(x=35, y=297), Point(x=297, y=299), Point(x=298, y=35)]) ] """ # 拿到內容 print(pyzbar.decode(im)[0].data.decode("utf-8")) # http://www.bilibili.com
Python主要應用于:1、Web開發(fā);2、數(shù)據(jù)科學研究;3、網絡爬蟲;4、嵌入式應用開發(fā);5、游戲開發(fā);6、桌面應用開發(fā)。
上述就是小編為大家分享的使用Python怎么生成并解析二維碼了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。