个性化阅读
专注于IT技术分析

如何在Python中创建QR Code图像或SVG

本文概述

快速响应(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")

编码愉快!

赞(0)
未经允许不得转载:srcmini » 如何在Python中创建QR Code图像或SVG

评论 抢沙发

评论前必须登录!