在网上浏览了无数版本 最后决定看官方文档 竟然这么简单。。我。了。个。去。。
qrcode制作 pyzbar识别 (二维码,一维码,视频里的码都可以识别)
好吧 生成和识别都很容易,至于结果要怎么用 看你自己需求了
因为涉及到图像:以下均使用到python强大的pillow包 如果没有的在pycharm里装就行 省的麻烦
1:制作二维码
用qrcode 安装命令用 pip install qrcode 在pycharm里直接装也行
import qrcode
from PIL import Image
qrcode.make('http://www.xytqd.club/juhe').show() #在pycharm上直接显示
#完成 以下代码可以自己玩着操作
#img = qrcode.make('http://www.xytqd.club/juhe')
#img.show()
#img.save() // 保存在哪里自己定
# 这是在内存中临时操作生成的二维码, 用完以后就会删掉 不用再取磁盘读写
import qrcode
from django.utils.six import BytesIO
qcode = qrcode.make('http://www.xytqd.club/juhe')
bu = BytesIO()
qcode.save(bu, 'png')
rr=bu.getvalue()
print(rr)
bu.close()
# 会输出一组二进制数据 用这个就可以给前端传数据 比如换成str格式后再jsonResponse--*****
2:识别二维码 (官方文档:https://pypi.org/project/pyzbar/)
用pyzbar 三个很小的包需要安 安装命令用 pip install pyzbar pip install pyzbar[scripts] 不同的操作系统额外需安装的包见下图 在pycharm里直接装没有的话就在终端用命令装
pyzbar用法如下:结果的四个坐标是二维码图片的四个角的位置(因为我的图片里不只有二维码,还有其他元素)
from pyzbar.pyzbar import decode
from PIL import Image
a=decode(Image.open('Weixin.jpg'))
print(a)
print(str((a[0].data)).split("\'")[1])
# 这是第二个print里我要的结果 wxp://f2f0KLocHvp4GBtESDS2-jJylmT9ApxomM8H 去在线的解码网站上也试了 一模一样
#如果一张图片里有多张二维码 依然可以识别 对上面的 a 进行循环操作再打印即可
#下面引号里是第一个print的结果
'''
[Decoded(data=b'wxp://f2f0KLocHvp4GBtESDS2-jJylmT9ApxomM8H',
type='QRCODE', rect=Rect(left=276, top=297, width=527, height=527),
polygon=[Point(x=276, y=297), Point(x=276, y=823), Point(x=803, y=824),
Point(x=802, y=297)])]
'''