Qrcode

使用Python的qrcode库创建QR码
本文介绍了QR码的结构,包括边框区、定位标记、校正图块和容错功能,并详细讲解了如何利用Python的qrcode库制作QR码,包括安装、最简单用法以及在QR码上放置图片的步骤。

参考了某书.(跟以前一样那本)

QR code的结构


QR code由边框区和数据区所组成,数据区由定位标记、校正图块、版本信息、原始信息、容错信息所组成,这些信息经过编码后产生二进制字符串,白色格子代表0,黑色格子代表1,这些格子一般又称作模块。其实经过编码后,还会使用屏蔽(masking)方法将原始二进制字符串与屏蔽图案(Mask Pattern)做XOR运算,产生实际的编码,经过处理后的QR code辨识率将更高。

在这里插入图片描述

  • 边框区
    也可以称为非数据区,主要是避免QR code周围的图像影响辨识。
  • 定位标记
    在上述图片中,左上、左下、右上是定位标记,外型类似“回”字,在使用QRcode扫描时我们可以发现不用完全对准也可以,主要是这3个定位标记在帮助扫描定位。
  • 校正图块
    主要用于校正辨识。
  • 容错修功能
    QR code有容错功能,所以如果QR code有破损,有时仍然可以读取,一般QRcode的面积越大,容错能力越强。
    在这里插入图片描述

QR的容量

QR code目前有40个不同版本,版本1是21×21个模块。模块是QR code最小的单位,每增加一个版本,长宽各增加4个模块,所以版本40是由177×177个模块组成,下列是以版本40为例做容量解

QRCode 即二维码,在信息存储与传递等方面应用广泛,以下从生成、识别、应用方面介绍相关信息: ### 生成 - **Python 生成方法**:使用`qrcode`库的`QRCode`函数创建二维码对象,该函数参数丰富。`version`表示二维码版本号,有 1 - 40 个版本,最小为 25 * 25,每增加一个版本尺寸增加 4 个格子;`error_correction`控制纠错级别,有`ERROR_CORRECT_L`(约 7% 或更少错误可更正)、`ERROR_CORRECT_M`(默认,约 15% 或更少错误可更正)、`ERROR_CORRECT_Q`(约 25% 或更少错误可更正)、`ERROR_CORRECT_H`(约 30% 或更少错误可更正);`box_size`控制每个格子像素数,默认 10;`border`控制四周留白格子数,默认 4;`image_factory`选择生成图片形式,默认 PIL 图像;`mask_pattern`选择生成图片的掩模。示例代码如下: ```python import qrcode from PIL import Image # 创建二维码对象 qr = qrcode.QRCode(version=8, error_correction=qrcode.constants.ERROR_CORRECT_H, box_size=10, border=0) data = "https://example.com" # 为二维码添加数据 qr.add_data(data) # 生成 qrImage = qr.make_image(fill_color='black', back_color='white') # 显示二维码图像 qrImage.show() # 也可以把它粘贴到其他空白图像上,用来打印 height = 512 width = 512 img = Image.new('RGB', (width, height), "white") img.paste(qrImage, (21, 21)) img.show() ``` - **React 生成方法**:使用`qrcode.react`库,示例代码如下: ```javascript var React = require('react'); var QRCode = require('qrcode.react'); var mountNode = document.getElementById('mountNode'); React.render( <QRCode value="http://facebook.github.io/react/" />, mountNode ); ``` ### 识别 识别二维码通常使用专门的库,如 Python 中的`pyzbar`库。该库可用于解码二维码图片中的信息,示例代码如下: ```python from pyzbar.pyzbar import decode from PIL import Image # 打开二维码图片 image = Image.open('qrcode.png') # 解码二维码 decoded_objects = decode(image) for obj in decoded_objects: print('Type:', obj.type) print('Data:', obj.data.decode('utf-8')) ``` ### 应用 - **商业营销**:商家在宣传海报、产品包装上印上二维码,消费者扫描后可获取产品详情、促销活动等信息,增加互动与销售机会。 - **移动支付**:用户出示或扫描二维码完成支付,便捷高效,广泛应用于各类消费场景。 - **信息获取**:景点、博物馆等场所设置二维码,游客扫描后可获取详细的介绍信息。 - **票务服务**:电子车票、门票等多以二维码形式呈现,方便检票与管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值