网站建设工作稳定吗,吉林省建筑工程网,做网站后端,网站建设制作周期0 说明
二维码不止一种#xff0c;本文介绍最常见的QR二维码。由于不能发二维码截图#xff0c;所以所有的执行结果都隐去了。完整版本可以移步到此查看#xff1a;https://vblogs.cn/momo1938/article?id0407576070659864
1 安装包
python 可以使用qrcode来生成二维码本文介绍最常见的QR二维码。由于不能发二维码截图所以所有的执行结果都隐去了。完整版本可以移步到此查看https://vblogs.cn/momo1938/article?id0407576070659864
1 安装包
python 可以使用qrcode来生成二维码python 安装时多半以内置了这个包没有的话可以先安装以下这个包
pip install qrcode2 生成二维码
2.1 简单示例
简单示例生成包含csdn地址的二维码
import qrcode#添加二维码信息
img qrcode.make(https://baidu.com)#保存二维码图片
img.save(01.png)生成的图片示例扫描即可打开百度
2.2 二维码的主要参数
2.2.1 Version版本取值范围1-40。
版本1大小为21X21矩阵版本40大小177x177矩阵。版本越大容纳的信息量越大版本1容纳的字符数约十几个版本40理论上可容纳7000多个字符大约1800个汉字。
import qrcode
img qrcode.make(https://baidu.com,version40)
img.save(02.png)版本为1和40二维码对比
2.2.2 error_correction 二维码纠错
此参数控制用于二维码的纠错。有四个级别如下所示:
ERROR_CORRECT_L 7%
ERROR_CORRECT_M15%
ERROR_CORRECT_Q25%
ERROR_CORRECT_H30%
什么是纠错 即使编码变脏或破损也可自动恢复数据。上面的四个级别表示当二维码的损毁部分不大于这个百分比时二维码依旧可以被正确识别
示例加入纠错
import qrcodeimg qrcode.make(https://csdn.net,version1,error_correctionqrcode.constants.ERROR_CORRECT_L,
)
img.save(03.png)然后将生成的二维码擦出掉右下角一部分依旧可以被识别。
2.2.3 box_size 控制框内像素数
此参数在版本号相同的情况下像素数越高二维码尺寸越大但二维码尺寸并不完全由此参数决定。
img qrcode.make(https://baidu.com,version1,error_correctionqrcode.constants.ERROR_CORRECT_L,box_size15)
img.save(04.png)在版本号相同的情况下box_size 15 和 50的对比
2.2.4 border控制边框的粗细。默认边框为 4 像素。
此处的边框指的的外围空白区域。
import qrcode
img qrcode.make(https://baidu.com,version1,box_size15,border8
)
img.save(05.png)边框为2 和 边框为8 的对比
2.2.5 顺便说一下二维码的尺寸
二维码的尺寸与这几个参数有关version border box_size具体计算公式如下 qr_size (21 (version - 1) * 4 border * 2) * box_size
2.2.6 其它说明
二维码生成时容错级别当然是越高越好但容错级别越高所能容纳的数据量就小也会增大二维码的尺寸。这个需要自己根据情况取舍。
2.2 生成彩色二维码
import qrcodeqr qrcode.QRCode(version1,error_correctionqrcode.constants.ERROR_CORRECT_H,box_size10,border4,
)qr.add_data(https://baidu.com)
#填充色和背景色
img qr.make_image(fill_colorpalegreen,back_colorlightgoldenrodyellow)
img.save(color.png)其中的填充色和背景色必须时web支持的颜色值。否则会报错生成的二维码
web颜色值是W3C定义的颜色标准一共140种感兴趣可自行搜索了解这里不再一一列举。
2.3 其它二维码
由于需要借助其它的库这里不再详细解释给出示例和注释需要时可直接拷贝代码。
2.3.1 带背景图片的二维码
使用myqr库pip install myqr
from MyQR import myqrmyqr.run(wordshttps://baidu.com/,version1,picturebg.jpg,colorizedTrue,save_namebg.png,
)生成结果
也可将背景图替换为gif.生成动态二维码。
2.3.2 生成内置logo的二维码
# coding: utf-8import qrcode
from PIL import Image # 依赖的库是pillow,常用的图片处理库qr qrcode.QRCode(version1,error_correctionqrcode.constants.ERROR_CORRECT_H,box_size10,border4,
)qr.add_data(https://badiu.com)
qr.make(fitTrue)
img qr.make_image(fill_colorblack, back_colorwhite)
img img.convert(RGBA)#logo
logo Image.open(logo.png)# 获取二维码的尺寸
img_w, img_h img.sizescale 6
size_w int(img_w / scale)
size_h int(img_h / scale)logo_w, logo_h logo.size
if logo_w size_w:logo_w size_w
if logo_h size_h:logo_h size_h
# 设置logo的尺寸和位置
logo logo.resize((logo_w, logo_h), Image.ANTIALIAS)
w int((img_w - logo_w) / 2)
h int((img_h - logo_h) / 2)
img.paste(logo, (w, h), logo)
img.save(11.png)生成结果
3 读取或识别二维码
使用opencv 库来识别二维码
pip install opencv-python读取示例
import cv2qr_file 01.png
qr_image cv2.imread(qr_file)
qr_detector cv2.QRCodeDetector()
data, bbox, straight_qrcode qr_detector.detectAndDecode(qr_image)print(data)控制台输出
$ python 06-4.py
https://baidu.com