使用 Python 生成二维码
先决条件: Python 基础知识
版本: Python 3.10、qrcode 7.3.1、Pillow 9.2.0
阅读时间: 40 分钟
介绍
你有没有想过二维码是如何工作的,或者程序化图像是如何生成的?你有没有想过用一种更酷炫的方式给别人发送网站链接?如果你对以上任何一个问题的答案是肯定的,那么你很幸运!
在本快速教程中,我们将学习如何使用qrcode、pillow和仅五行代码在 Python 中创建二维码。
让我们开始吧!
什么是二维码?
QR码是快速响应码 (Quick Response Code) 的缩写,最初由一家日本科技公司于 1994 年发明。它是一种二维条形码,在白色背景上印有黑色图案。然而,这绝非普通的涂鸦:QR 码能够在看似很小的空间内存储海量数据。这些黑色矩形可以存储链接、文本,基本上任何你想存储的内容……而且只需用任何移动设备扫描即可访问!
二维码非常重要,因为它让用户能够轻松地访问非传统来源(例如纸质材料)上的内容。相比于网站链接,将二维码印在纸上能带来更佳、更快捷的用户体验。正因如此,二维码如今已比UPC 条形码更加普及,餐厅菜单、名片,甚至超级碗广告中都能看到它的身影!
关于二维码的知识已经足够了,让我们学习如何创建一个!
设置
首先,打开你选择的 Python 代码编辑器(我们推荐VS Code),创建一个名为qr_code.py的新文件。我们将在这里编写代码。
注意:你可以将文件命名为除qrcode.py之外的任何名称。这是因为qrcode.py是库中已经存在的文件qrcode
,我们将使用这个文件,调用该文件将覆盖库函数。
首先,我们需要安装两个库:
要安装qrcode
和pillow
,请在 VS Code 终端内运行以下命令:
pip install qrcode pillow
在本教程中,我们使用 qrcode 版本 7.3.1 和 Pillow 版本 9.2.0。
接下来,将这行代码添加到qr_code.py的第一行:
import qrcode
这行代码确保了这两个库可以在我们其余的代码中使用,因为 Python 代码在文件中是从上到下运行的。我们只需要 import qrcode
,因为pillow
是隐式导入的。
创建二维码
首先,我们需要一个想要展示的链接。我们来用一个经典的 YouTube 视频。
我们可以将此 YouTube URL 存储到名为的变量中website_link
:
website_link = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
接下来,我们要创建一个 的实例qrcode
。由于它是一个 Python 库,我们可以调用包的构造函数来创建一个qrcode
根据我们的规范定制的对象。
在这个例子中,我们将创建一个版本为 1,框大小和边框大小为 5 的二维码。
qr = qrcode.QRCode(version = 1, box_size = 5, border = 5)
- 该
version
参数是1到40之间的整数,控制二维码的大小。 - 该
box_size
参数控制二维码的每个“框”有多少个像素。 - 该
border
参数控制边框的粗细框数。
作为练习,尝试将这些参数作为输入,并向用户解释如何设置,以便他们可以根据自己的规范创建二维码。
请访问文档以获取有关 中的参数的更多信息qrcode.QRCode(...)
。
然后,使用 将数据(具体来说,就是我们之前指定的链接)添加到二维码中.add_data()
。然后使用 生成二维码.make()
:
qr.add_data(website_link)
qr.make()
img
最后,我们使用以下方法将创建的二维码保存在枕头对象中qr.make_image()
:
img = qr.make_image(fill_color = 'black', back_color = 'white')
- 将线条颜色设置
fill_color
为黑色。 - 将背景颜色设置
back_color
为白色。
最后,我们必须存储并保存文件。我们可以使用 Pillow 的save()
命令来完成此操作。我们在括号内指定文件名,youtube_qr.png
在本例中就是如此。
img.save('youtube_qr.png')
现在我们完成了!以下是完整代码:
import qrcode
website_link = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
qr = qrcode.QRCode(version = 1, box_size = 5, border = 5)
qr.add_data(website_link)
qr.make()
img = qr.make_image(fill_color = 'black', back_color = 'white')
img.save('youtube_qr.png')
您应该会看到youtube_qr.png图像弹出在 VS Code 的左侧,您可以打开它来查看它的样子。
您可以将此二维码添加到您喜欢的任何地方,包括您的网站或电子邮件中!
改进
为了改善这种情况,我们可以做几件事:
input()
允许使用功能输入网站链接。- 允许用户自定义生成的二维码。
- 自动化创建多个二维码的过程。
- 包含库的更多函数(或对象参数)
qrcode
。 - 尝试使用不同的抽屉模块和填充颜色来更改生成的二维码的颜色和样式。
- 使用应用程序库(如Tkinter)添加用户界面。
- 查看其他二维码库,例如
pyqrcode
。