当前位置 : 主页 > 编程语言 > python >

【案例】不仅用 Python 制作二维码,我还要扫描它

来源:互联网 收集:自由互联 发布时间:2022-06-24
文章目录 ​​1. 案例介绍​​ ​​2. 准备工作​​ ​​3. 细节设计​​ ​​3.1 生成二维码​​ ​​3.2 解析二维码​​ ​​4. 代码汇总​​ ​​5. 运行结果​​ ​​后记​​ 1. 案


文章目录

  • ​​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 qrcode
from PIL import Image
from pyzbar import pyzbar

filePath = "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 filePath


def 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_data


if __name__ == "__main__":
create_QRcode('abcdefghijkl123') # 传入参数为需要编码的数据
decode_QRcode(filePath) # 传入参数为待识别的二维码

5. 运行结果

【案例】不仅用 Python 制作二维码,我还要扫描它_python

【案例】不仅用 Python 制作二维码,我还要扫描它_开发语言_02

后记

以上就是我们今天的内容,我们可以尝试用一个交互界面来完善我们这个案例,小黑框看起来还是很难看。

【案例】不仅用 Python 制作二维码,我还要扫描它_数据_03


上一篇:【案例】绘制一个薯片?
下一篇:没有了
网友评论