蘭雅sRGB 个人笔记 https://262235.xyz
提供编程和电脑应用视频教程,工具和源代码
C, C++, Python Programming, Source Code, Video

旧Hexo博客 | Github | IP定位WebAPI | Docker Hub
编程中文文档 | 网盘分享 | 中文Linux命令

纯python二维码生成器 (google翻译) Pure python QR Code generator

qrcode.png

纯python二维码生成器 Pure python QR Code generator

生成二维码。

对于标准安装(包括用于生成图像的 pillow),运行:

pip install qrcode

什么是二维码?

快速响应码是一种二维象形码,具有快速的可读性和较大的存储容量。该代码由在白色背景上以方形图案排列的黑色模块组成。
编码的信息可以由任何类型的数据组成(例如,二进制、字母数字或汉字符号)

用法

从命令行,使用已安装的 qr 脚本:

qr "Some text" > test.png

或者在 Python 中,使用 make 快捷功能:

import qrcode
img = qrcode.make('Some data here')
type(img)  # qrcode.image.pil.PilImage
img.save("some_file.png")

高级用法


如需更多控制,请使用 QRCode该类。例如:

import qrcode
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)
qr.add_data('Some data')
qr.make(fit=True)

img = qr.make_image(fill_color="black", back_color="white")

version 参数是一个 1 到 40 之间的整数,用于控制 QR 码的大小(最小的版本 1 是一个 21x21 矩阵)。
在编写代码时设置 None 并使用该fit参数来自动确定这一点。

fill_colorback_color 可以在使用默认图像工厂时更改 QR 的背景和绘画颜色。这两个参数都接受 RGB 颜色元组。

img = qr.make_image(back_color=(255, 195, 235), fill_color=(55, 95, 35))

error_correction 参数控制用于二维码的纠错。 qrcode 包中提供了以下四个常量:

ERROR_CORRECT_L

大约可以纠正 7% 或更少的错误。

ERROR_CORRECT_M (default)

大约 15% 或更少的错误可以被纠正。

ERROR_CORRECT_Q

大约 25% 或更少的错误可以被纠正。

ERROR_CORRECT_H.

大约可以纠正 30% 或更少的错误。

box_size参数控制二维码的每个 box 有多少像素。

border参数控制边框应该有多少个框厚(默认为 4,这是根据规范的最小值)。

其他图像工厂

您可以编码为 SVG,或使用新的纯 Python 图像处理器编码为 PNG 图像。

下面的 Python 示例使用了make快捷方式。相同的image_factory 关键字参数是QRCode用于更高级用法的类的有效选项。

SVG
您可以创建整个 SVG 或 SVG 片段。在构建整个 SVG 图像时,您可以使用组合作为路径的工厂(推荐和默认用于脚本)或创建一组简单矩形的工厂。

从您的命令行:

qr --factory=svg-path "Some text" > test.svg
qr --factory=svg "Some text" > test.svg
qr --factory=svg-fragment "Some text" > test.svg

或者在 Python 中:

import qrcode
import qrcode.image.svg

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
else:
    # Combined path factory, fixes white space that may occur when zooming
    factory = qrcode.image.svg.SvgPathImage

img = qrcode.make('Some data here', image_factory=factory)

其他两个相关的工厂可用,它们的工作方式相同,但也用白色填充 SVG 的背景:

qrcode.image.svg.SvgFillImage
qrcode.image.svg.SvgPathFillImage

Pure Python PNG

安装以下两个包:

pip install -e git+git://github.com/ojii/pymaging.git#egg=pymaging
pip install -e git+git://github.com/ojii/pymaging-png.git#egg=pymaging-png

从您的命令行:

qr --factory=pymaging "Some text" > test.png

或者在 Python 中:

import qrcode
from qrcode.image.pure import PymagingImage
img = qrcode.make('Some data here', image_factory=PymagingImage)

样式图像

要将样式应用于 QRCode,请使用 StyledPilImage 图像工厂。这需要一个可选的模块抽屉来控制二维码的形状,
一个可选的颜色遮罩来改变二维码的颜色,以及一个可选的图像嵌入中心。

这些 QR 码不能保证适用于所有阅读器,因此请进行一些实验并将纠错设置为高(尤其是在嵌入图像时)。

绘制带有圆角、径向渐变和嵌入图像的 QR 码的示例:

import qrcode
from qrcode.image.styledpil import StyledPilImage
from qrcode.image.styles.moduledrawers import RoundedModuleDrawer
from qrcode.image.styles.colormasks import RadialGradiantColorMask

qr = qrcode.QRCode(error_correction=qrcode.constants.ERROR_CORRECT_L)
qr.add_data('Some data')

img_1 = qr.make_image(image_factory=StyledPilImage, module_drawer=RoundedModuleDrawer())
img_2 = qr.make_image(image_factory=StyledPilImage, color_mask=RadialGradiantColorMask())
img_3 = qr.make_image(image_factory=StyledPilImage, embeded_image_path="/path/to/image.png")

二维码样式:

module_drawers.png

二维码颜色填充:

color_masks.png

例子

print_ascii 获取文本内容:

import io
import qrcode
qr = qrcode.QRCode()
qr.add_data("Some text")
f = io.StringIO()
qr.print_ascii(out=f)
f.seek(0)
print(f.read())

add_data 方法将数据附加到当前 QR 对象。要通过替换同一对象中以前的内容来添加新数据,请首先使用 clear 方法:

import qrcode
qr = qrcode.QRCode()
qr.add_data('Some data')
img = qr.make_image()
qr.clear()
qr.add_data('New data')
other_img = qr.make_image()

管道输出到命令行中的 ascii 文本文件:

qr --ascii "Some data" > "test.txt"
cat test.txt

替代管道输出到文件以避免 PoweShell 问题:

# qr "Some data" > test.png
qr --output=test.png "Some data"

纯python二维码生成器 Pure python QR Code generator

本原创文章自由转载,转载请注明本博来源及网址 | 当前页面:蘭雅sRGB 个人笔记 » 纯python二维码生成器 (google翻译) Pure python QR Code generator