安利一波我开的专栏: https://segmentfault.com/blog/cheez_python 和 https://zhuanlan.zhihu.com/cheezpython
https://github.com/lincolnloop/python-qrcode
import qrcode
qrcode.QRCode(
version=1,
error_correction=qrcode.ERROR_CORRECT_L,
box_size=10,
border=4,
image_factory=None,
mask_pattern=None
)
None
(默认)或者使用fit=true
参数(默认)时,二维码会自动调整大小。常用方法:
data
参数;如果使用了optimize
优化参数,数据将被拆分为多个块来进行优化,以找到一个长度至少为这个值的足够简洁的方式来生成二维码。设置为“ 0 ”以避免优化。fit
参数为真或者没有给出version
参数时,将会调用best_fit
方法来找到适合数据的最小尺寸。如果没有设置mask_pattern
,将会调用best_mask_pattern
方法来找到找到最有效的掩模图案。最后将这些数据传递给makeImpl
方法来生成二维码。与qrcode
本体的make
方法不一样的是,这个方法没有任何返回值。invert
参数是决定是否反转颜色的参数,默认为假,如果为真的话会这样:其他方法:
out
参数,会使用sys.stdout
。属性(这些大家基本都不用管):
qrcode
可以生成三种不同的 svg 图像,一种是用路径表示的 svg,一种是用矩形集合表示的完整 svg 文件,还有一种是用矩形集合表示的 svg 片段。第一种用路径表示的 svg 其实就是矢量图,可以在图像放大的时候可以保持图片质量,而另外两种可能会在格子之间出现空隙。
这三种分别对应了 svg.py 中的 SvgPathImage、SvgImage 和 SvgFragmentImage 类。在调用qrcode.make
函数或者实例化QRCode
时当作image_factory
参数的值传入就可以了。
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)
执行命令安装pymaging
相关模块:
pip install git+git://github.com/ojii/pymaging.git#egg=pymaging
pip install git+git://github.com/ojii/pymaging-png.git#egg=pymaging-png
然后给image_factor
参数传入qrcode.image.pure.PymagingImage
就可以生成 PNG 图片了。
import qrcode
from qrcode.image.pure import PymagingImage
img = qrcode.make('Some data here', image_factory=PymagingImage)
这是作者推荐的方式,但是我个人认为,完全没有必要这么麻烦,直接用默认的 PIL 就可以获取 PNG 图片了,例子看下文。
make
方法实际上就是在内部调用了QRCode(要转换的文本).make_image()
,最后(默认)返回了一个 PIL 图像对象。
# 显示图片
qrcode.make("hello world!").show()
# 保存 PNG 图片
qrcode.make("hello world!").save('hello.png')
生成一个作者项目网站地址的二维码并显示出来。
翻译自作者的Github 地址中的 README 和具体代码注释。
1
Cheez OP 挽尊
|
2
GTim 2018-07-16 19:10:18 +08:00
声明,兄弟啊...
|
4
Cheez OP 挽尊
|
5
omph 2018-07-16 22:50:23 +08:00
怎么生成一个好看的 QR 码?
|
7
Cheez OP 挽尊
|