avatar

RWO.cc

读一次写一次

  • 首页
  • 搭建手册
  • 笔记
  • 短视频
  • 关于
  • 🌈200粉丝🌈
Home Python中的二维码生成与解析(花里胡哨)
文章

Python中的二维码生成与解析(花里胡哨)

Posted 2024-11-1 Updated 2024-11- 1
By RWO.
17~22 min read

如何使用 qrcode 库生成各种有趣的二维码,包括彩色二维码、带 Logo 的二维码和动态 GIF 二维码。下面,我们将逐步介绍这些功能。

Qrcode 库简介

qrcode 库是一个强大的 Python 工具,用于生成二维码。除了基本的二维码,它还支持自定义功能,如颜色变化、样式设计和动画效果。

生成彩色二维码

我们可以通过设置二维码的填充色和背景色来生成彩色二维码。以下是示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import qrcode

# 创建二维码实例
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)

# 添加数据
qr.add_data("https://blog.rwo.cc")
qr.make(fit=True)

# 创建图像,设置颜色
img = qr.make_image(fill_color="blue", back_color="yellow")
img.save("colorful_qrcode.png")

效果展示:

colorful_qrcode.png

接下来,我们可以使用以下代码生成更多样式的二维码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import qrcode
from qrcode.image.styledpil import StyledPilImage
from qrcode.image.styles.moduledrawers import RoundedModuleDrawer, SquareModuleDrawer
from qrcode.image.styles.colormasks import RadialGradiantColorMask, SquareGradiantColorMask

# 纠错设置为高
qr = qrcode.QRCode(error_correction=qrcode.constants.ERROR_CORRECT_H)
qr.add_data('https://www.baidu.com')

# 修改二维码形状和颜色
img_1 = qr.make_image(image_factory=StyledPilImage, module_drawer=RoundedModuleDrawer())
img_2 = qr.make_image(image_factory=StyledPilImage, color_mask=SquareGradiantColorMask())
img_3 = qr.make_image(image_factory=StyledPilImage, embeded_image_path="rwo.png")
img_4 = qr.make_image(image_factory=StyledPilImage, module_drawer=SquareModuleDrawer(), color_mask=RadialGradiantColorMask(), embeded_image_path="rwo.png")

img_1.save("img_1.png")
img_2.save("img_2.png")
img_3.save("img_3.png")
img_4.save("img_4.png")

这些代码将生成不同风格的二维码,效果更加醒目。

img_1.png

img_1.png

img_1.png

img_1.png

添加 Logo 到二维码

为了让二维码更加个性化,我们还可以在其中添加 Logo。以下是相应的代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from PIL import Image

# 创建二维码
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_H,
    box_size=10,
    border=4,
)
qr.add_data("https://blog.rwo.cc")
qr.make(fit=True)

# 创建图像
img = qr.make_image(fill_color="black", back_color="white")

# 添加Logo
logo = Image.open("logo.png")
logo = logo.resize((50, 50))  # 调整Logo大小
img.paste(logo, (70, 70))  # 将Logo添加到二维码中

img.save("logo_qrcode.png")

在这个示例中,我们将一个 Logo 添加到二维码的中心,使其更加专业。

生成 GIF 二维码

接下来,我们将生成一个动态的 GIF 二维码,通过设置不同的颜色来实现动画效果。以下是示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import qrcode
from PIL import Image

frames = []

# 生成多个不同颜色的二维码
colors = [("red", "white"), ("green", "black"), ("blue", "yellow")]
for fill_color, back_color in colors:
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        box_size=10,
        border=4,
    )
    qr.add_data("https://blog.rwo.cc")
    qr.make(fit=True)
    img = qr.make_image(fill_color=fill_color, back_color=back_color)
    frames.append(img)

# 将帧保存为GIF
frames[0].save("animated_qrcode.gif", save_all=True, append_images=frames[1:], loop=0, duration=500)

通过这段代码,我们生成了三个不同颜色的二维码,并将它们合并为一个 GIF 文件,实现了动态效果。

MyQR 库生成 GIF 背景二维码

除了 qrcode 库,MyQR 库也是一个功能强大的工具,可以生成动图二维码。以下是使用 MyQR 生成动图二维码的示例:

1
2
3
4
5
6
7
8
9
10
11
pip install MyQR
from MyQR import myqr

myqr.run(
    words="https://blog.rwo.cc",
    version=3,
    picture="R.gif",
    colorized=True,
    save_name="April_3.gif",
    save_dir="."
)

效果展示:

April_3.gif

April_3.gif

附录

要将样式应用于 QRCode,请使用 StyledPilImage。这需要一个可选的 module_drawers 参数来控制二维码的形状,一个可选的 color_mask 参数来改变二维码的颜色,还有一个可选的 embeded_image_path 参数来嵌入图像。这些二维码并不能保证对所有的二维码识别器都有效,所以做一些实验并将纠错 error_correction 设置为高(尤其是嵌入图像时)。

形状列表

image.png

颜色列表

image.png

总结

使用 qrcode 库和 MyQR 库,我们可以轻松生成彩色二维码、带 Logo 的二维码以及动态 GIF 二维码。这些功能为二维码的使用增添了趣味和个性化。希望大家能在自己的项目中尝试尝试,定制自己的二维码。

短视频
每日一点 短视频 Python
License:  CC BY 4.0
Share

Further Reading

Nov 3, 2024

什么是 python 的闭包

在 Python 中,闭包(Closure)是一种函数对象,它不仅包含了函数的代码,还包含了函数创建时的环境变量。这意味着闭包可以“记住”其外部作用域中的变量,即使在外部作用域已经结束后,闭包仍然可以访问这些变量。 函数可以访问他被创建时所处的上下文环境,这被称为闭包。 闭包的基本特征 嵌套函数:闭

Nov 2, 2024

使用argparse模块解析命令行参数

在 Python 中,argparse 模块用于解析命令行参数,使得脚本可以更灵活地接受用户输入。以下是如何使用 argparse 模块解析命令行参数的详细介绍和示例。 基本用法 示例:简单的命令行参数解析 首先,创建一个简单的脚本来解析命令行参数。我们将创建一个脚本,该脚本接受两个整数并打印它们的

Nov 1, 2024

Python中的二维码生成与解析(花里胡哨)

如何使用 qrcode 库生成各种有趣的二维码,包括彩色二维码、带 Logo 的二维码和动态 GIF 二维码。下面,我们将逐步介绍这些功能。 Qrcode 库简介 qrcode 库是一个强大的 Python 工具,用于生成二维码。除了基本的二维码,它还支持自定义功能,如颜色变化、样式设计和动画效果。

OLDER

Python中的二维码生成与解析(基础使用)

NEWER

使用argparse模块解析命令行参数

Recently Updated

  • 什么是 python 的闭包
  • 使用argparse模块解析命令行参数
  • Python中的二维码生成与解析(花里胡哨)
  • Python中的二维码生成与解析(基础使用)
  • 使用platform模块获取系统信息

Trending Tags

学习 Git 工具 SQL docker-compose 每日一点 快捷键 Flink fastapi Windows

Contents

  • Qrcode 库简介
  • 生成彩色二维码
  • 添加 Logo 到二维码
  • 生成 GIF 二维码
  • MyQR 库生成 GIF 背景二维码
  • 附录
    • 形状列表
    • 颜色列表
  • 总结

©2025 RWO.cc. Some rights reserved.

Using the Halo theme Chirpy