Skip to main content

PyQRCode New Generation——一个纯粹用 Python 编写的二维码生成器,带有 SVG、EPS、PNG 和终端输出。

项目描述

PyQRCodeNG

PyQRCodeNG 模块是一个二维码生成器,使用简单,用纯 Python 编写。该模块自动化了大部分用于创建 QR 码的构建过程。大多数代码只需两行代码即可创建!

与其他生成器不同,所有的助手都可以手动控制。您可以自由设置二维码的任何或所有属性。

二维码可以保存为 SVG、XBM、EPS、PNG(通过使用 PyPNG <https://pypi.org/project/pypng/>模块)或纯文本。它们也可以直接显示在大多数 Linux 终端仿真器和 Tkinter 中。PIL 或 Pillow 不用于渲染图像文件。

PyQRCodeNG 模块尝试尽可能地遵循 QR 码标准。PyQRCodeNG 中使用的术语和编码直接来自标准。该模块还遵循标准中规定的算法。

要求

PyQRCodeNG 只需要 Python 2.7 或 Python 3。您可能需要安装 PyPNG以呈现 PNG 文件,但它是可选的。

安装

安装简单。可以使用以下命令从 pip 安装它:

$ pip install -U pyqrcodeng

用 PyQRCodeNG 替换 PyQRCode

PyQRCodeNG 是 PyQRCode 的一个分支,因为后者似乎没有维护。该API主要兼容PyQRCode。在您的代码中,您可以在不更改 QR 代码生成代码的情况下使用以下导入。

>>> import pyqrcodeng as pyqrcode

用法

这是您唯一需要的导入。该模块的核心是 QRCode 类。您可以正常构造类,也可以使用创建包装函数。

>>> import pyqrcodeng
>>> qr = pyqrcodeng.create('Unladden swallow')
>>> qr.png('famous-joke.png', scale=5)

编码数据

该模块支持所有四种数据编码:数字、字母数字、汉字和二进制。

数字类型是编码数字的最有效方式。顾名思义,它旨在对整数进行编码。有些数字可能太大,对象可以使用仅包含数字的字符串而不是实际数字。

>>> number = pyqrcodeng.create(123456789012345)

字母数字类型非常有限,因为它只能编码一些 ASCII 字符。它编码:大写字母、0-9、水平空格和八个标点字符。可用字符可让您对 URL 进行编码

>>> url = pyqrcodeng.create('http://uca.edu')

当所有其他方法都失败时,数据可以用纯二进制编码。由于小写字符、撇号和换行符,下面的引用必须以二进制编码。

>>> life = pyqrcodeng.create('''MR. CREOSOTE: Better get a bucket. I'm going to throw up.
    MAITRE D: Uh, Gaston! A bucket for monsieur. There you are, monsieur.''')

唯一未实现的编码是 ECI 模式,它允许在一个 QR 码中进行多种编码(这将在未来的版本中实现)。

手动设置二维码属性

在许多情况下,您可能希望对 QR 码的生成方式进行更细粒度的控制。您可以通过create函数指定 QR 码的所有属性。QR 码具有三个主要属性。

error参数设置代码的纠错级别。每个级别都有一个由字母给出的关联名称:L、M、Q 或 H;每个级别可以分别校正高达 7%、15%、25% 或 30% 的数据。有几种方法可以指定级别,请参阅 pyqrcodeng.tables.modes 了解所有可能的值。默认情况下,此参数设置为“H”,这是可能的最高纠错,但它具有最小的可用数据容量。

version参数指定代码的大小和数据容量。版本是 1 到 40 之间的任意整数,其中版本 1 是最小的二维码,版本 40 是最大的。默认情况下,对象使用数据的编码和纠错级别来计算可能的最小版本。在生成具有不同数据量的多个 QR 码时,您可能需要指定此参数以保持一致性。这样,所有生成的代码都将具有相同的大小。

最后,mode参数设置内容的编码方式。如上所述,已经编写了五种可能的编码中的三种。默认情况下,对象对内容使用最有效的编码。不过,您可以更改此设置。有关此参数的可能值列表,请参阅 qrcode.tables.modes。

下面的代码构造了一个具有 25% 纠错、大小为 27 的 QR 码,并强制编码为二进制(而不是数字)。

>>> big_code = pyqrcodeng.create('0987654321', error='L', version=27, mode='binary')

渲染

呈现 QR 码有多种可能的格式。第一种是将其呈现为 1 和 0 的字符串。此方法用于帮助最终用户创建自己的渲染器。也可以打印代码,以便在大多数 Linux 终端中直接显示。有几个基于图像的渲染器。

终端渲染器输出一串 ASCII 转义码,当在兼容终端中显示时,将显示有效的 QR 码。背景和模块颜色是可设置的(尽管与您在终端中显示颜色的任何时候一样,有几个警告)。

>>> url.term()

SVG 渲染器将 QR 码输出为可缩放矢量图形。此渲染器不需要任何外部模块。相反,它会将二维码手绘为一组路径。

>>> url.svg(sys.stdout, scale=1)
>>> url.svg('uca.svg', scale=4, module_color="#7D007D")

或者,如果您安装了 pypng 模块,您可以将二维码渲染为 PNG 文件。如果要利用透明度,颜色应指定为 RGB 或 RGBA。

>>> number.png('big-number.png')
>>> life.png('sketch.png', scale=6, module_color=(0, 0, 0, 128), background=(0xff, 0xff, 0xcc))

最后,还有一个基于文本的渲染器。这会将 QR 码输出为 1 和 0 的字符串,代码的每一行都在一个新行上。

>>> print(number.text())

文档

阅读在线文档 < https://pyqrcodeng.readthedocs.io/ >

变化

1.3.6 - 2020-01-01

  • 代码改进/重构

  • 优化数字二维码的生成

  • 更快的PNG写入(大约快两倍)

1.3.5 - 2020-01-01

  • 如果用户提供二进制数据并将模式显式设置为“二进制”,则不要引发 UnicodeError。由 Mathieu < https://github.com/albatros69 > (PR #13)修复

  • 构建器会引发更具体的异常,例如VersionErrorMaskErrorDataOverflowError。此更改向后兼容,因为所有异常都继承自ValueError

  • 为 QRCode 添加了“designator”属性。这对版本号和纠错级别进行编码,即“1-H”

  • 固定字母数字编码。该错误是在 1.3.4 版本中引入的

  • 添加了更多测试用例

1.3.4 - 2019-07-07

  • 改进的文档

  • 内部代码重构

  • 添加了 CLI 文档

  • (已弃用)QRCode.terminal() 不起作用。固定的。

1.3.3 - 2019-06-30

  • 改进的文档

  • 内部代码重构

  • 性能改进

1.3.2 - 2019-06-29

  • PyQRCode NG(PyQRCode Next Generation)的初始版本

1.3.0 - 2018-06-26

1.2.1 - 2016-06-20

  • 修复了问题 #43。错误地留下了调试打印语句。我更改了分发脚本以检查并确保它不会再次发生。

1.2 - 2016-05-20

  • 添加了汉字支持。

  • 添加了将 PNG QR 码输出为 base64 字符串的功能。允许为 Web 服务创建编码,而无需创建中间文件。感谢 [Fábio C. Barrionuevo da Luz (luzfcb)]( https://github.com/luzfcb )

  • 为 XBM 添加了渲染器。在 Tkinter 中显示 QR 码现在非常简单。感谢 [Seth VanHeulen (svanheulen)]( https://github.com/svanheulen )

1.1.1 - 2016-02-27

  • 修复了问题 #38,其中数字编码被添加的 unicode 支持破坏。

1.1 - 2016-04-15

  • 添加了对 Python 2.6 的支持

  • 所有渲染器现在都有一个4 的安静区域。该值可通过参数设置。

  • 修复了文件流未正确关闭的问题

  • 特别感谢 [Lars (heuer)](https://github.com/heuer) 在此版本中做出了大量改进。

    • 大大改进了 SVG 实现。现在使用路径而不是线条。还允许使用 SVG 片段而不是整个文档。

    • 我们现在有单元测试!!他为库的所有不同部分编写了 100 多个单元测试。

    • 一个新的 EPS 渲染器。

    • 一种直接从您的代码中显示二维码的机制。

1.0 - 2014-12-04

  • 修复了在错误位置添加终端位的问题。

  • 添加了将二维码输出到 Linux 终端的功能。

  • 添加了对 Python 2.7 的支持

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

PyQRCodeNG-1.3.6.tar.gz (46.4 kB 查看哈希

已上传 source

内置分布

PyQRCodeNG-1.3.6-py2.py3-none-any.whl (47.5 kB 查看哈希

已上传 py2 py3