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)修复
构建器会引发更具体的异常,例如VersionError、MaskError、 DataOverflowError。此更改向后兼容,因为所有异常都继承自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
添加了对 Riccardo Metere 贡献的 meCards 等的支持 固定 < https://github.com/mnooner256/pyqrcode/pull/45 >
如果将构造函数模式赋予构造函数,则跳过检测内容类型。由 Martijn van Rheenen 提供。已修复 < https://github.com/mnooner256/pyqrcode/issues/50 >
由于不推荐使用nose,将测试从nose 移到pytest,请参阅< https://github.com/heuer/pyqrcode/issues/2 >
更新的测试环境:添加了 PyPy、PyPy3 和 Python 3.6
QRCode.get_png_size() 已弃用,请使用 QRCode.symbol_size()。后者返回一个 (width, height) 元组,而不是整数。
不推荐使用 QRCode.png_as_base64_str(),使用 QRCode.png_data_uri() 返回有效的 URI 而不是 Base64 编码的字符串
更快的 PNG 生成,固定 < https://github.com/mnooner256/pyqrcode/pull/47 >
添加了 CLI Fixed #4 和 < https://github.com/mnooner256/pyqrcode/pull/53 >
为 QRCode 添加 term() 方法,将 QR 码打印到终端。这适用于 Windows 和 Unix。
弃用 QRCode.terminal() 支持 QRCode.term()
在 QRCode.text 中添加了“scale”参数
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 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | b84cd27cbf973593686d38b5a002464fbeb6e8dbd16aea293e6092eea0dc462b |
|
| MD5 | 4e40e90b9cfd59b7403d1d0ea4a8b715 |
|
| 布莱克2-256 | b041f40da7cff47b8055103262b3783fec3ac97059f44a2656894328073dcb72 |
PyQRCodeNG -1.3.6-py2.py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 40ac27bae84139cdbbe72ef80ee20c1506452af4458ef5305cf02ad19ac7787e |
|
| MD5 | 3366c4ae87d2ef93ca2810a03ff42845 |
|
| 布莱克2-256 | 7ae7d5c8834c3f1b122c8a517bf7264182a16fa1e2b8d910da3d9bf927f3816e |