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