纯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_color
和 back_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")
二维码样式:
二维码颜色填充:
例子
从 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