本文概述
快速响应(QR)代码是一种二维象形代码, 由于其快速的可读性和相对大的存储容量而被使用。该代码由在白色背景上以正方形图案排列的黑色模块组成。如果你使用的是Python, 并且需要快速创建QR代码, 我们将向你展示如何使用qrcode库在几秒钟内实现这一目标。
1.安装所需的库
你需要在Python中添加的第一个库是Pillow。 Python Imaging Library是Python编程语言的免费库, 它在新版本中也被称为PIL或在新版本中被称为Pillow, 它是Python编程语言的免费库, 它增加了对打开, 操作和保存许多不同图像文件格式的支持。它适用于Windows, Mac OS X和Linux。要创建QR Code, 我们将使用依赖枕头的qrcode库
你可以在终端中执行以下命令来安装此模块:
REM Required to work with images
pip install Pillow
一旦完成Pillow的安装, 你就可以继续安装QR生成器库:
REM install library to generate QR Codes
pip install qrcode
否则, 在没有Pillow的情况下, 使用QR Code库创建图像时会出现错误消息” ImportError:没有名为Image的模块”。有关枕头或二维码的更多信息, 请访问其主页。
2.创建二维码作为图像
创建QR码所需编写的代码非常容易理解, 非常简单。首先导入qrcode库并使用其中的QRCode方法, 然后根据需要提供参数
# Import QR Code library
import qrcode
# Create qr code instance
qr = qrcode.QRCode(
version = 1, error_correction = qrcode.constants.ERROR_CORRECT_H, box_size = 10, border = 4, )
# The data that you want to store
data = "The Data that you need to store in the QR Code"
# Add data
qr.add_data(data)
qr.make(fit=True)
# Create an image from the QR Code instance
img = qr.make_image()
# Save it somewhere, change the extension as needed:
# img.save("image.png")
# img.save("image.bmp")
# img.save("image.jpeg")
img.save("image.jpg")
错误修正
QR代码具有纠错功能, 可以在代码损坏或变脏时恢复数据。该库提供四个错误纠正级别, 它们存储在qrcode.constants对象中:
- ERROR_CORRECT_L:可以纠正大约7%或更少的错误。
- ERROR_CORRECT_M :(默认)可以纠正大约15%或更少的错误。
- ERROR_CORRECT_Q:可以纠正大约25%或更少的错误。
- ERROR_CORRECT_H:可以纠正大约30%或更少的错误。
在创建QR代码期间, 应将它们提供为error_correction属性的值。
QR码大小
你可以使用box_size属性更改生成的QR码的大小。
3.将QRCode创建为SVG
如果你愿意生成QRCode的SVG文件而不是图像, 则还需要安装lxml库, 因为较早的xml.etree.ElementTree版本不能用于创建SVG图像。 lxml是XML工具包, 是C库libxml2和libxslt的Pythonic绑定。它的独特之处在于它将这些库的速度和XML功能的完整性与本机Python API的简单性结合在一起, 该Python API大多数都兼容, 但优于众所周知的ElementTree API。
要使用pip安装此模块, 请在终端中运行以下命令:
pip install lxml
安装后, 你将能够为将要生成的SVG文件生成ElementTree。 SVG的生成方法可以根据你的需求而有所不同, 该库提供了三种类型的SVG, 即SVG图像, 使用片段或路径:
import qrcode
import qrcode.image.svg
# define a method to choose which factory metho to use
# possible values 'basic' 'fragment' 'path'
method = "basic"
data = "Some text that you want to store in the qrcode"
if method == 'basic':
# Simple factory, just a set of rects.
factory = qrcode.image.svg.SvgImage
elif method == 'fragment':
# Fragment factory (also just a set of rects)
factory = qrcode.image.svg.SvgFragmentImage
elif method == 'path':
# Combined path factory, fixes white space that may occur when zooming
factory = qrcode.image.svg.SvgPathImage
# Set data to qrcode
img = qrcode.make(data, image_factory = factory)
# Save svg file somewhere
img.save("qrcode.svg")
编码愉快!
评论前必须登录!
注册