Python中的二维码生成与解析(花里胡哨)
如何使用 qrcode
库生成各种有趣的二维码,包括彩色二维码、带 Logo 的二维码和动态 GIF 二维码。下面,我们将逐步介绍这些功能。
Qrcode 库简介
qrcode
库是一个强大的 Python 工具,用于生成二维码。除了基本的二维码,它还支持自定义功能,如颜色变化、样式设计和动画效果。
生成彩色二维码
我们可以通过设置二维码的填充色和背景色来生成彩色二维码。以下是示例代码:
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")
效果展示:
接下来,我们可以使用以下代码生成更多样式的二维码:
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")
这些代码将生成不同风格的二维码,效果更加醒目。
添加 Logo 到二维码
为了让二维码更加个性化,我们还可以在其中添加 Logo。以下是相应的代码示例:
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 二维码,通过设置不同的颜色来实现动画效果。以下是示例代码:
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
生成动图二维码的示例:
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="."
)
效果展示:
附录
要将样式应用于 QRCode,请使用
StyledPilImage
。这需要一个可选的module_drawers
参数来控制二维码的形状,一个可选的color_mask
参数来改变二维码的颜色,还有一个可选的embeded_image_path
参数来嵌入图像。这些二维码并不能保证对所有的二维码识别器都有效,所以做一些实验并将纠错error_correction
设置为高(尤其是嵌入图像时)。
形状列表
颜色列表
总结
使用 qrcode
库和 MyQR
库,我们可以轻松生成彩色二维码、带 Logo 的二维码以及动态 GIF 二维码。这些功能为二维码的使用增添了趣味和个性化。希望大家能在自己的项目中尝试尝试,定制自己的二维码。