Gointerface接口声明实现及作用详解
481
2022-08-27
【案例】不仅用 Python 制作二维码,我还要扫描它(在这个案例中)
文章目录
1. 案例介绍2. 准备工作3. 细节设计
3.1 生成二维码3.2 解析二维码
4. 代码汇总5. 运行结果后记
1. 案例介绍
我们使用 Python 提供的 qrcode 库和 pyzbar 库实现二维码的制作和解码。
2. 准备工作
qrcode 库。pillow 库。pyzbar 库。
3. 细节设计
3.1 生成二维码
核心代码:
qr = qrcode.QRCode()qr.add_data(data)qr.make(fit=True)img = qr.make_image(fill_color='black', back_color='white')
我们使用 qrcode 提供的 add_data、make、make_imge 方法,实现加载数据、生成二维码对象、将二维码对象保存至图片功能。
3.2 解析二维码
核心代码:
decode_data = pyzbar.decode(Image.open(filePath), symbols=[pyzbar.ZBarSymbol.QRCODE])[0].data.decode('utf-8')
我们使用 pyzbar 提供的 decode 方法,读入二维码图片,进行解码。
>>> pyzbar.decode(Image.open(filePath), symbols=[pyzbar.ZBarSymbol.QRCODE])[Decoded(data=b'abcdefghijkl123', type='QRCODE', rect=Rect(left=4, top=4, width=84, height=84), polygon=[Point(x=4, y=4), Point(x=4, y=88), Point(x=88, y=88), Point(x=88, y=4)])]
4. 代码汇总
# coding: utf-8# !/usr/bin/python"""@File : QRcode.py@Author : jiaming@Modify Time: 2020/1/13 19:55@Contact : @Version : 1.0@Desciption : 生成传统二维码 解析传统二维码"""import qrcodefrom PIL import Imagefrom pyzbar import pyzbarfilePath = "C:\\Users\\jiaming\\Desktop\\qrcode.png"def create_QRcode(data=''): """ :return: 生成的二维码路径 """ print('生成传统二维码...') # 向二维码中填充数据 """ version:值为1~40的整数,控制二维码的大小(最小值是1,是个12×12的矩阵)。 如果想让程序自动确定,将值设置为 None 并使用 fit 参数即可。 error_correction:控制二维码的错误纠正功能。可取值下列4个常量。 ERROR_CORRECT_L:大约7%或更少的错误能被纠正。 ERROR_CORRECT_M(默认):大约15%或更少的错误能被纠正。 ROR_CORRECT_H:大约30%或更少的错误能被纠正。 ERROR_CORRECT_Q:至多能够矫正25%的错误。 box_size:控制二维码中每个小格子包含的像素数。 border:控制边框(二维码与图片边界的距离)包含的格子数(默认为4,是相关标准规定的最小值)。 """ qr = qrcode.QRCode( error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=4, border=1, ) # 设置图片格式 qr.add_data(data) qr.make(fit=True) # 生成二维码 img = qr.make_image(fill_color='black', back_color='white') img.save(filePath, dpi=(254.0, 254.0)) print('保存路径:', filePath) return filePathdef decode_QRcode(filePath=''): """ :param filePath: 待识别二维码路径 :return: 打印出识别的结果 """ decode_data = pyzbar.decode(Image.open(filePath), symbols=[ pyzbar.ZBarSymbol.QRCODE])[0].data.decode('utf-8') print("解码数据:", decode_data) return decode_dataif __name__ == "__main__": create_QRcode('abcdefghijkl123') # 传入参数为需要编码的数据 decode_QRcode(filePath) # 传入参数为待识别的二维码
5. 运行结果
后记
以上就是我们今天的内容,我们可以尝试用一个交互界面来完善我们这个案例,小黑框看起来还是很难看。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~