Python qrcode模块(生成二维码)

  • 一、Qrcode类解释
    • 1、QR Codede 由来
    • 2、QRCode二维码版本
  • 二、Qrcode类构造函数及参数含义
    • 1、version=None
    • 2、error_correction=constants.ERROR_CORRECT_M
    • 3、box_size=10,
    • 4、border=4
    • 5、image_factory=None
    • 6、mask_pattern=None
  • 三、Qrcode类常用方法
    • 1、qr.make(self, fit=True)
    • 2、qr.add_data(self, data, optimize=20)
    • 3、qr.print_tty(self, out=None)
    • 4、qr.make_image(fillcolor=None, backcolor=None,image_factory=None)
    • 5、qr.clear()
    • 6、qr.get_matrix()
  • 四、image_factory参数的详解
    • 1、生成 SVG 图像
    • 2、生成 PNG 图像
  • 五、实例:

一、Qrcode类解释

qrcode模块里包含:Qrcode类
调用Qrcode类时,首先实例化对象

1、QR Codede 由来

QR Code码是由日本于1994年9月研制的一-种矩阵二维码符号,它具有一维条码及其它二 维条码所具有的信息容量大、可靠性高、可表示汉字及图象多种文字信息、保密防伪性强等优点。
依赖于
qrcode模块是Github_上的一-个开源项目,提供了生成二维码的接口。qrcode默认使用PIL库用于生成图像。由于生成qrcode图片需要依赖Python的图像库,所以需要先安装Python图像库PIL(Python Imaging Library)。
二维码(2-dimensional bar code),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的。它能将数字、英文字母、汉字、日文字母、特殊符号(如空格,%,/ 等)、二进制等信息记录到一个正方形的图片中。

2、QRCode二维码版本

QR码符号共有40种规格,分别为版本1、版本…版本40版本1的规格为21模块x21模块,版本2为25模块x25模块,以此类推,每一版本符号比前一版本每边增加4个模块,直到版本40,规格为177模块X177模块。其中最高版本40可容纳多达1850个大写字母或2710个数字或1108个字节,或500多个汉字,比普通条码信息容量约高几十倍。由于其高密度编码,信息容量大,所以被广泛采用。

# 实例化 :qr =  qrcode.Qrcode(version=None,error_correction=constants.ERROR_CORRECT_M,box_size=10, border=4,image_factory=None,mask_pattern=None)

二、Qrcode类构造函数及参数含义

Qrcode类构造函数
 def __init__(self, version=None,error_correction=constants.ERROR_CORRECT_M,box_size=10, border=4,image_factory=None,mask_pattern=None):_check_box_size(box_size)self.version = version and int(version)self.error_correction = int(error_correction)self.box_size = int(box_size)# Spec says border should be at least four boxes wide, but allow for# any (e.g. for producing printable QR codes).self.border = int(border)_check_mask_pattern(mask_pattern)self.mask_pattern = mask_patternself.image_factory = image_factoryif image_factory is not None:assert issubclass(image_factory, BaseImage)self.clear()

参数详解:

1、version=None

 一个整数,范围为1到40,表示二维码的大小(最小值是1,是个12×12的矩阵),如果想让程序自动生成,将值设置为 None 并使用 fit=True 参数即可

2、error_correction=constants.ERROR_CORRECT_M

 二维码的纠错范围,可以选择4个常量:1. ERROR_CORRECT_L 7%以下的错误会被纠正2. ERROR_CORRECT_M (default) 15%以下的错误会被纠正3. ERROR_CORRECT_Q 25 %以下的错误会被纠正4. ERROR_CORRECT_H. 30%以下的错误会被纠正

3、box_size=10,

控制二维码中每个小格子包含的像素数

4、border=4

控制边框(二维码与图片边界的距离)包含的格子数(默认为4,是相关标准规定的最小值)

5、image_factory=None

选择生成图片的形式,默认为PIL图像

6、mask_pattern=None

选择生成图片的的掩模

三、Qrcode类常用方法

1、qr.make(self, fit=True)

fit=True自动生成大小适中的二维码,当version=None时fit=True才起作用

2、qr.add_data(self, data, optimize=20)

 optimize=20  :优化:数据将被分割成多个块,通过找到至少这个长度的压缩模式来优化QR大小。
设置为“0”以完全避免优化

3、qr.print_tty(self, out=None)

仅使用TTY颜色输出二维码。如果数据尚未编译,请先进行编译。

4、qr.make_image(fillcolor=None, backcolor=None,image_factory=None)

 从二维码数据制作图像。如果数据还没有编译好,就先做创建二维码的图像并返回,
默认为 PIL 图像。如果要让二维码有颜色,可以在这里设置

5、qr.clear()

清空数据

6、qr.get_matrix()

返回二维码数组

四、image_factory参数的详解

make_image()生成二维码时,默认设置的是PIL图像工具

if image_factory is None:# Use PIL by defaultfrom qrcode.image.pil import PilImageimage_factory = PilImage

1、生成 SVG 图像

 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 zoomingfactory = qrcode.image.svg.SvgPathImage
img = qrcode.make('Some data here', image_factory=factory) # 通过make函数二维码,二make函数内部封装生成二维码make_image(),记住make是一个函数,不是Qrcode类的方法
# 'Some data here':是相当于add_data()

2、生成 PNG 图像

执行命令安装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')

扩展:
1、qrcode.make(“hello world!”) 是模块的函数
2、qr.make(fit=True) 只是Qrcode类的一个方法 ,不要混合这两个make

make函数
def make(data=None, **kwargs):   qr = QRCode(**kwargs)qr.add_data(data)return qr.make_image()
# 1、**kwargs 可以为version,error_correction,box_size=10, border=4,image_factory=None,mask_pattern=None
# 2、make(data=None, **kwargs)函数内部调用的就是QRCode()实例化的对象qr.make()是Qrcode类的方法
qr =  qrcode.Qrcode(version=None,error_correction=constants.ERROR_CORRECT_M,box_size=10, border=4,image_factory=None,mask_pattern=None)
qr.make(fit=True)  #当version为None, 自动生成大小适中的二维码

五、实例:

import qrcodeqr = qrcode.QRCode(version=None,error_correction=qrcode.constants.ERROR_CORRECT_L,border=4,box_size=10)img = qrcode.make('ssssssssssssss',version=4,border=4,box_size=12)img.save('path.jpg')  # 以文件形式保存图片(参数:为文件路径)print(img,type(img)) # <qrcode.image.pil.PilImage object at 0x00000000028EE348> <class 'qrcode.image.pil.PilImage'>print(img.box_size)# 12  # 二维码一个格最小大小(像素)print(img.width)# 33print(img.size)# (492, 492)  img对象(图片)的长和宽

Python qrcode模块(生成二维码)相关推荐

  1. python qrcode库生成二维码的代码

    如下内容内容是关于python qrcode库生成二维码的内容,希望能对各位有所用. import qrcode img = qrcode.make('Some data here')高级用法impo ...

  2. python之qrcode模块生成二维码

    用Python的qrcode包来生成二维码很简单 一.前期准备: pip install qrcode qrcode 依赖 Image 这个包: pip install Image 二.安装好之后就可 ...

  3. Python使用QRCode模块生成二维码

    简介 python-qrcode是个用来生成二维码图片的第三方模块,依赖于 PIL 模块和 qrcode 库. 简单用法 import qrcode img = qrcode.make('hello, ...

  4. 基于 Django 使用 qrcode 模块生成二维码

    简介: 二维码简称 QR Code(Quick Response Code),学名为快速响应矩阵码,是二维条码的一种,由日本的 Denso Wave 公司于1994 年发明.现随着智能手机的普及,已广 ...

  5. python api文档生成二维码_使用Python第三方库生成二维码

    本文主要介绍两个可用于生成二维码的Python第三方库:MyQR和qrcode. MyQR的使用: 安装: pip install MyQR 导入: from MyQR import myqr imp ...

  6. 巧用Python的Qrcode库生成二维码大全

    二维码介绍 QR 码是二维条码的一种,QR来自英文 "Quick Response" 的缩写,即快速反应的意思,源自发明者希望 QR 码可让其内容快速被解码. QR 码 比普通条码 ...

  7. 苏彤,你的 Python Flask 编写生成二维码接口写完了

    需求背景 本篇博客实战解决一个真是场景,需求描述如下: 为团队其它成员提供一个二维码生成接口,传入文本,返回图片地址,数据存储到 OSS 中. 采用 Python Flask 框架实现,并且使用一个第 ...

  8. Python之一键生成二维码

    目录 二维码编码字符集 二维码基本特性 qrcode 简易模式 全功能模式 数据时代,二维码已经成为我们生活之密不可分的部分,不经意间,我们已处二维码的海洋. 二维码是用某种特定的几何图形按一定规律在 ...

  9. 在H5中使用qrcode, qrcodejs2生成二维码

    在H5中使用qrcode生成二维码 安装插件 ```javascript npm install --save qrcode ``` 使用插件 按需引入 //index.html<html> ...

  10. qrcode——js生成二维码

    1.引入 qrcode.min.js(点击下载demo) 2.html: <div id="qrcode"></div> js: var qrcode = ...

最新文章

  1. 动态表单构建器——建造者模式
  2. 高校人工智能热的“冷”思考
  3. caffe apt install
  4. 干货|针对单个网站的渗透思路(精)
  5. 蓝桥杯 第十届 JAVAB组 E迷宫
  6. Linux之dd命令详解
  7. 卸载docker后部署k8s后docker无法启动问题
  8. icmp端口_pingtunnel搭建icmp隧道
  9. 实验一 命令解释程序编写
  10. 今日头条品质优化 - 图文详情页秒开实践
  11. 做开源,兴趣是最好的源动力 | 龙蜥开发者说第1期
  12. 怎么把录音导入库乐队_库乐队导入电脑版 苹果库乐队怎么导入歌
  13. 安装win10 我们无法格式化所选分区的解决办法
  14. SHON WEBB:真正的自律,就是将这两件事做到极致
  15. 知乎首页实战之下载知乎App模块
  16. 《VC++深入详解》第三章
  17. 丢掉迅雷,1M的下载神器让你下载飞起来,NDM/XDM分享
  18. P1486 [NOI2004]郁闷的出纳员
  19. Virbox Protector AAB 加固-兼容 Google Play 上架
  20. 空字符'\0'与字符串

热门文章

  1. ”从生命起源到智慧宇宙“全文(英文论文)
  2. 量子计算机生命,100年后,量子计算机将创造生命,生命的起源或将被改写
  3. python3.6实现随机森林算法(可视化)机器学习算法(赵志勇)学习笔记
  4. 基于SpringBoot 适合学习的开源社区平台
  5. web开发学习,HTML标签语义化
  6. Linux SDIO WIFI Marvell8801/Marvell88w8801(三) --- Linux驱动以及组件的使用
  7. 补码一位乘法(Booth算法)
  8. 可执行的移动端网站seo技术
  9. Windows cmd 进入其他盘
  10. java socket实现的简易的聊天工具demo