详细分析python中QRCode生成二维码的基本知识(附Demo)

前言

以下主要利用python中的QRCode来生成二维码的基本知识

1. 基本知识

简单易用,并且可以生成高质量的二维码图像

支持多种自定义设置,例如二维码的大小、边框、容错级别、颜色等

先安装:pip install qrcode[pil],[pil] 选项会安装 Pillow,这个库用于处理图像,是生成二维码图像时必需的依赖项
在这里插入图片描述

核心的API如下所示:

基本的QRCode类如下:

  • version:控制二维码的大小(1 到 40),数字越大,二维码尺寸越大。默认为 1
  • error_correction:设置容错等级,支持以下选项:
    ERROR_CORRECT_L:7% 的字节数据可以被修正
    ERROR_CORRECT_M:15% 的字节数据可以被修正
    ERROR_CORRECT_Q:25% 的字节数据可以被修正
    ERROR_CORRECT_H:30% 的字节数据可以被修正
  • box_size:控制二维码中每个点的大小(像素)
  • border:边框的宽度,以盒子的数量表示(box_size 的倍数)

还有其他的几个API:

API描述
QRCode.add_data(data)将数据添加到二维码对象中。data可以是字符串、URL 或其他可编码的数据
QRCode.make(fit=True)根据数据自动调整二维码的大小
QRCode.make_image(fill_color=“black”, back_color=“white”)生成二维码图像,fill_color设置二维码前景色,back_color设置背景色
QRCode.save() 和 QRCode.show()分别用于保存和显示生成的二维码图像

2. Demo

简单的Demo如下:

import qrcode

img = qrcode.make('manong')
img.save('test.png')

简单文本二维码:

import qrcode

# 创建一个简单的二维码
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)

# 添加数据到二维码
qr.add_data("Hello, World!")
qr.make(fit=True)

# 生成二维码图像
img = qr.make_image(fill_color="black", back_color="white")

# 保存图像
img.save("hello_world_qr.png")

# 显示图像
img.show()

带有url二维码:

import qrcode

# 生成一个包含URL的二维码
url = "https://blog.csdn.net/weixin_47872288"
qr = qrcode.make(url)

# 保存二维码
qr.save("url_qr.png")

# 显示二维码
qr.show()

自定义二维码颜色:

import qrcode

# 创建一个自定义颜色的二维码
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_H,
    box_size=10,
    border=4,
)

qr.add_data("Colorful QR Code")
qr.make(fit=True)

# 生成带有自定义颜色的二维码
img = qr.make_image(fill_color="blue", back_color="yellow")

# 保存图像
img.save("colorful_qr.png")

# 显示图像
img.show()

整体复杂Demo如下:

import qrcode
from PIL import Image

# 创建QRCode对象并设置版本、容错等级和边框大小
qr = qrcode.QRCode(
    version=1,  # 版本控制二维码的大小。1表示21x21的矩阵。
    error_correction=qrcode.constants.ERROR_CORRECT_L,  # 容错等级,L表示7%的字节数据可以被修正。
    box_size=10,  # 控制二维码中每个点的大小(像素)。
    border=4,  # 边框的宽度,单位是盒子的数量(box_size的倍数)。
)

# 添加数据到QRCode对象
data = "https://blog.csdn.net/weixin_47872288"
qr.add_data(data)
qr.make(fit=True)  # 自动调整二维码大小以适应数据

# 生成二维码图像
img = qr.make_image(fill_color="black", back_color="white")

# 保存二维码图像到文件
img.save("qrcode.png")

# 显示二维码图像
img.show()

# 如果你希望在二维码上叠加一个小图标,如Logo:
logo = Image.open('logo.png')  # 打开Logo图像
basewidth = 50  # 设置Logo的宽度
wpercent = (basewidth / float(logo.size[0]))
hsize = int((float(logo.size[1]) * float(wpercent)))
# 将Logo图像缩放到指定大小
logo = logo.resize((basewidth, hsize), Image.LANCZOS)


# 获取二维码的中心位置
pos = ((img.size[0] - logo.size[0]) // 2, (img.size[1] - logo.size[1]) // 2)
img.paste(logo, pos)  # 将Logo粘贴到二维码的中心

# 保存带Logo的二维码图像
img.save("qrcode_with_logo.png")

最终生成的图像如下所示:

在这里插入图片描述

3. 彩蛋

3.1 文件路径

对于文件路径找不到图片的,可以采取如下几种方式

一、检查文件路径

确保 logo.png 文件确实存在于 F:\python_project\test\ 目录下

logo = Image.open('F:\\python_project\\test\\logo.png')  # 使用绝对路径

二、 使用相对路径

如果 logo.png 文件存放在与脚本相同的目录中,可以使用相对路径:

import os

# 获取脚本所在的目录路径
script_dir = os.path.dirname(os.path.abspath(__file__))

# 拼接得到logo的完整路径
logo_path = os.path.join(script_dir, 'logo.png')

# 打开Logo图像
logo = Image.open(logo_path)

三、添加文件存在性检查

在打开文件之前,可以先检查文件是否存在,避免抛出异常:

import os

logo_path = 'F:\\python_project\\test\\logo.png'

if os.path.exists(logo_path):
    logo = Image.open(logo_path)  # 打开Logo图像
else:
    print(f"Logo file not found at {logo_path}. Please check the file path.")
    # 处理没有找到文件的情况,例如退出程序或使用默认的logo

方法 4: 确保文件名和后缀正确

确认 logo.png 文件的后缀名和文件名是否正确,有时文件名中的空格、大小写或者后缀名可能导致找不到文件

3.2 Image.LANCZOS

在较新的版本的 PIL(Pillow)库中,Image.ANTIALIAS 已被弃用,并且被重命名为 Image.LANCZOS

如果使用Image.ANTIALIAS ,会出现如下问题:

在这里插入图片描述

需要将其代码替换如下:

# 旧代码
logo = logo.resize((basewidth, hsize), Image.ANTIALIAS)

# 将Logo图像缩放到指定大小
logo = logo.resize((basewidth, hsize), Image.LANCZOS)
### 回答1: 可以使用 Pythonqrcode 库来生成二维码。首先需要安装 qrcode 库,可以使用 pip 命令进行安装: ``` pip install qrcode ``` 然后可以使用以下代码来生成二维码: ```python import qrcode qr = qrcode.QRCode( version=1, box_size=10, border=5 ) data = "https://www.example.com" qr.add_data(data) qr.make(fit=True) img = qr.make_image(fill_color="black", back_color="white") img.save("qrcode.png") ``` 这样就能在当前目录下生成一个名为 qrcode.png 的二维码图片. ### 回答2: Python是一种功能强大的编程语言,经常用来开发各种应用程序。Python有许多库和模块可以用来生成二维码。其一个流行的库是qrcode库。它提供了一种简单的方法来生成QR码。 生成QR码非常简单,只需要在Python安装qrcode库并使用以下代码即可: ``` import qrcode img = qrcode.make('hello') img.save('hello.png') ``` 上述代码创建了一个包含“hello”字符串的QR码,并将其保存到名为“hello.png”的文件。 除了基本的QR码之外,qrcode库还支持其他选项,例如自定义QR码大小和颜色,添加图像和LOGO等。例如,下面的代码生成了一个红色的QR码,并将一个LOGO添加到它的心: ``` import qrcode img = qrcode.QRCode( version=1, error_correction=qrcode.constants.ERROR_CORRECT_Q, box_size=10, border=4, ) img.add_data('hello') img.make(fit=True) # 添加logo icon = Image.open('logo.png') img_size = img.get_matrix().width icon_size = int(img_size / 4) icon = icon.resize((icon_size, icon_size), Image.ANTIALIAS) w, h = icon.size x, y = int((img_size - w) / 2), int((img_size - h) / 2) img.paste(icon, (x, y)) img = img.make_image(fill_color="red", back_color="white") img.save('hello.png') ``` 总之,使用Pythonqrcode库是一种快速,简单和灵活生成QR码的方法。它提供了多种选项,使用户能够轻松为QR码添加颜色,图像或LOGO等自定义内容。 ### 回答3: Python是一种通用编程语言,可用于处理各种常见的编程问题。在Python,我们可以使用第三方库来生成二维码。其最常用的是qrcode库,它可以用来创建并输出QR code。 首先,我们需要使用pip来安装qrcode库。在命令行界面输入以下命令即可: pip install qrcode 一旦qrcode库安装完成,我们就可以使用Python生成二维码了。下面是一个基本的代码段,可以用于生成一个最简单的二维码: ``` import qrcode img = qrcode.make('https://www.example.com/') img.show() ``` 在这个例子,我们首先导入了qrcode库。接着,我们定义了一个字符串变量,它包含了将要生成的二维码所代表的URL。然后,我们使用make()函数来生成QR code,然后用show()方法来输出它。这个QR code会在一个新的窗口显示出来。 在这个基础上,我们可以根据需要进行定制,以实现更专业的QR code生成。例如,我们可以使用size选项来指定二维码的尺寸,使用color选项来指定二维码的颜色,使用box_size选项来指定QR code的方块大小等等。 在Python使用qrcode库生成QR code非常容易,即使是对于初学者也是如此。有了它,你可以轻松地在Python生成高品质、高精度的QR code。不仅如此,qrcode库还有非常好的文档和例子。因此,即使你是一个新手,你也能很快地开始使用它来生成二维码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农研究僧

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值