pip install qrcode pillow image zxing
pillow是python3中PIL的代替庫,image是生成圖版須要用到的庫html
安裝image時報錯「Could not install packages due to an EnvironmentError: [Errno 22] invalid mode ('wb') or filename」,沒管,直接在pycharm的setting中安裝就沒報錯了。python
如下是生成指向百度的二維碼爲例,用戶掃描後會訪問百度首頁。代碼以下。git
另外注意咱們平常使用是掃一個二維碼就跳轉到某個頁面。但本質而言,掃二維碼就是獲得內容,而不會跳轉什麼頁面。github
好比微信等掃如下二維碼就是獲得「https://www.baidu.com」,至於自動跳到百度首頁是由於微信添加了若是掃描二維碼結果是url就自動跳轉的代碼形成的。windows
也就是說二維碼的內容徹底能夠不是url,而是「abcd」等仍意字符串,用微信掃時顯示「abcd」而不是跳轉什麼頁面而已。微信
不過因爲二維碼(指qr code)的容量是有限的,只有幾百到幾千個字節,因此通常不會直接用來存圖片等內容。ide
import qrcode # 二維碼內容 data = "https://www.baidu.com" # 生成二維碼 img = qrcode.make(data=data) # 直接顯示二維碼 img.show() # 保存二維碼爲文件 # img.save("baidu.jpg")
生成二維碼以下:oop
所謂高級用法,就是設置二維碼大小、顏色等參數的寫法。示例代碼以下,其中實例化參意義以下:google
version參數----二維碼的格子矩陣大小,能夠是1到40,1最小爲21*21,40是177*177url
error_correction參數----二維碼錯誤允許率,默認ERROR_CORRECT_M,允許小於15%的錯誤率
box_size參數----二維碼每一個小格子包含的像素數量
border參數----二維碼到圖片邊框的小格子數,默認值爲4
(不太肯定是否是都對,可直接查看官方說明:https://github.com/lincolnloop/python-qrcode#advanced-usage)
import qrcode # 實例化二維碼生成類 qr = qrcode.QRCode( version=1, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=10, border=4, ) # 設置二維碼數據 data = "https://www.baidu.com" qr.add_data(data=data) # 啓用二維碼顏色設置 qr.make(fit=True) img = qr.make_image(fill_color="green", back_color="white") # 顯示二維碼 img.show()
生成二維碼以下:
google流行的是使用qrtools來讀二維碼,可是qrtools依賴zbar不兼容python3,其替代品zbarlight在windows安裝又很麻煩,直接放棄了。
又回頭折騰百度上流行的zxing,zxing一直報」python zxing OSError: [WinError 6] 句柄無效「,直接搜「if _WaitForSingleObject(self._handle, 0) == _WAIT_OBJECT_0:」。看到這篇文章說windows上報這個錯能夠直接「註釋掉subprocess.py中的 _cleanup()方法」。雖說的不是zxing,但庫是同樣的,姑且一試還真能夠。
以下圖所示,將_cleanup()直接註釋掉:
import zxing reader = zxing.BarCodeReader() barcode = reader.decode("baidu.jpg") print(barcode.parsed)
使用2.1中的代碼生成並保存二維碼,解析運行結果以下:
參考:
https://github.com/lincolnloop/python-qrcode
http://www.javashuo.com/article/p-oqgmqksh-gt.html
https://github.com/dlenski/python-zxing
https://baijiahao.baidu.com/s?id=1586194723484285133&wfr=spider&for=pc