暂无分类
暂无标签
发布于2020-11-09 17:56 阅读(643) 评论(0) 点赞(16) 收藏(4)
0
1
2
3
4
5
6
我们使用 Python 提供的 qrcode 库和 pyzbar 库实现二维码的制作和解码。
核心代码:
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 方法,实现加载数据、生成二维码对象、将二维码对象保存至图片功能。
核心代码:
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)])]
# coding: utf-8
# !/usr/bin/python
"""
@File : QRcode.py
@Author : jiaming
@Modify Time: 2020/1/13 19:55
@Contact : https://blog.csdn.net/weixin_39541632
@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) # 传入参数为待识别的二维码
以上就是我们今天的内容,我们可以尝试用一个交互界面来完善我们这个案例,小黑框看起来还是很难看。
0
1
2
3
4
作者:天青色等烟雨
链接: https://www.pythonheidong.com/blog/article/611894/76fcd2a2be106cf843ba/
来源: python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
Copyright © 2018-2019 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系z452as@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!