使用Python生成QR码
了解QR码
- QR码是一种二维像素化形式的可机读条形码。
- QR码可用于存储各种数据。
- QR中的QR码是”Quick Response”的缩写。
- QR码是1994年由日本汽车制造商电装波尔公司的工程师原正宽发明的,用于追踪汽车部件的移动。
- QR码的流行程度在2010年代后期随着手机光学性能的提高和广泛接受而增加。
- 目前,QR码正在被广泛用于各种应用,例如在线支付、查看酒店菜单、共享Wi-Fi密码、获取产品的成本和其他信息等等。
- QR码已经变得如此著名,以至于现在每个新的智能手机都内置了一个QR码阅读器。
在接下来的教程中,我们将学习使用Python编程语言生成和读取QR码。
所以,让我们开始吧。
使用Python生成QR码
Python是一种编程语言,提供了不同的模块和包,可以用来生成QR码。在本教程中,我们将使用qrcode包来生成代码。
然而,为了开始使用该包,我们必须安装它。
安装Python qrcode包
我们可以使用pip安装程序来安装 qrcode 包,使用以下命令:
语法:
$ pip install qrcode
该软件包将以Python和pip的版本安装在系统中。
验证安装
为了检查软件包是否已正确安装在系统中,我们可以尝试导入该软件包并执行程序。
一旦安装完成,创建一个新的Python文件,并在其中输入以下语法。
示例:
# importing the required module
import qrcode
现在,保存文件并在命令提示符中使用以下命令运行文件。
语法:
$ python <file-name>.py
如果程序在运行时没有引发任何导入错误,则说明该模块已正确安装。否则,建议重新安装该软件包并参考其官方文档。
现在,让我们开始使用 qrcode 库。
生成一个简单的QR码
我们可以使用 qrcode 的make函数生成一个简单的QR码,并将数据作为其参数传递。
让我们考虑以下示例,它生成一个读取”Welcome to Javatpoint”的QR码。
示例:
# importing the qrcode library
import qrcode
# generating a QR code using the make() function
qr_img = qrcode.make("Welcome to Javatpoint.")
# saving the image file
qr_img.save("qr-img.jpg")
输出:
解释:
在上面的代码片段中,我们导入了 qrcode 库,并定义了一个变量,该变量使用 qrcode 库的 make() 函数生成了一个QR代码。然后,我们使用 save() 函数将QR代码保存在目录中。
我们可以使用智能手机来读取上面的QR代码。
注意: 不要使用智能手机来读取随机的QR代码,因为它们可能包含恶意代码/链接。
生成高级QR代码
程序员可以使用 QRCode 对象来自定义QR代码,该对象包含以下表格中显示的参数:
序号 | 参数 | 描述 |
---|---|---|
1 | 版本 | 二维码有四十个版本,决定了二维码的尺寸大小。版本1是最小的,而版本40是最大的。版本1会生成一个21×21的矩阵二维码。 |
2 | 错误纠正 | 这个参数用于控制二维码的错误纠正程度。错误纠正程度可以在7%到30%之间。具体如下: 1. ERROR_CORRECT_L: 最多纠正7% 2. ERROR_CORRECT_M: 最多纠正15% 3. ERROR_CORRECT_Q: 最多纠正25% 4. ERROR_CORRECT_H: 最多纠正30% |
3 | 方块尺寸 | 这个参数用于控制二维码中每个方块的像素数量。 |
4 | 边框 | 这个参数用于控制二维码的边框厚度。默认边框厚度为4个像素。 |
我们可以使用 QRCode 对象的以下函数来创建QR码。
序号 | 功能 | 描述 |
---|---|---|
1 | add_data() | 我们可以将QR码的内容作为参数传递给这个函数。 |
2 | make() | 在我们不确定使用哪个版本的QR码时,可以通过以下方式自动设置版本: 1. 将 version 参数设置为 None, 和 2. 将 make() 函数的 fit 参数设置为 True. |
3 | make_image() | 这个函数用于生成QR码。我们还可以通过 fill_color 和 back_color 参数来设置QR码的填充颜色和背景颜色。 |
让我们考虑以下示例,以便生成一个指向Python教程的QR码。
示例:
# importing the qrcode module
import qrcode
# creating a QRCode object
obj_qr = qrcode.QRCode(
version = 1,
error_correction = qrcode.constants.ERROR_CORRECT_L,
box_size = 10,
border = 4,
)
# using the add_data() function
obj_qr.add_data("https://www.javatpoint.com/python-tutorial")
# using the make() function
obj_qr.make(fit = True)
# using the make_image() function
qr_img = obj_qr.make_image(fill_color = "cyan", back_color = "black")
# saving the QR code image
qr_img.save("qr-img1.png")
输出:
解释:
在上面的代码片段中,我们导入了 qrcode 库。然后,我们创建了 qrcode 库的 QRCode 类的实例。我们使用不同的参数来定制QR代码。然后,我们使用 add_data() 函数来包含QR代码的信息。我们还使用 make() 和 make_image() 函数来生成QR代码图像。最后,我们使用 save() 函数将图像文件保存在目录中。
如何读取QR代码?
我们将利用 OpenCV 库来读取QR代码。如果系统中未安装该库,我们可以使用以下命令使用pip安装它:
语法:
$ pip install cv2
一旦安装完成,我们可以进入QR码的解码部分。为了解码QR码,我们将使用 QRCodeDetector 对象的 detectAndDecode 函数。
让我们考虑相同的代码片段。
示例:
# importing the OpenCV library
import cv2
# reading the image
qr_img = cv2.imread("qr-img1.png")
# using the QRCodeDetector() function
qr_det = cv2.QRCodeDetector()
# using the detectAndDecode() function
val, pts, st_code = qr_det.detectAndDecode(qr_img)
# printing the value
print("Information:", val)
输出:
Information: https://www.javatpoint.com/python-tutorial
解释:
在上面的代码片段中,我们导入了cv2
库。然后我们使用imread()
函数从目录中读取图像,并使用QRCodeDectector()
函数检测图像中的QR码。然后我们使用detectAndDecode()
函数并打印了用户的值。
结果是,detectAndDecode
函数返回了QR码的内容、盒子角落的坐标和二值化的QR码。