【案例】不仅用 Python 制作二维码,我还要扫描它(在这个案例中)

网友投稿 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小时内删除侵权内容。

上一篇:Java 数据结构与算法系列精讲之字符串暴力匹配
下一篇:Python小知识点(5)(Python小知识)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~