Python qrcode模块(生成二维码)
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模块(生成二维码)相关推荐
- python qrcode库生成二维码的代码
如下内容内容是关于python qrcode库生成二维码的内容,希望能对各位有所用. import qrcode img = qrcode.make('Some data here')高级用法impo ...
- python之qrcode模块生成二维码
用Python的qrcode包来生成二维码很简单 一.前期准备: pip install qrcode qrcode 依赖 Image 这个包: pip install Image 二.安装好之后就可 ...
- Python使用QRCode模块生成二维码
简介 python-qrcode是个用来生成二维码图片的第三方模块,依赖于 PIL 模块和 qrcode 库. 简单用法 import qrcode img = qrcode.make('hello, ...
- 基于 Django 使用 qrcode 模块生成二维码
简介: 二维码简称 QR Code(Quick Response Code),学名为快速响应矩阵码,是二维条码的一种,由日本的 Denso Wave 公司于1994 年发明.现随着智能手机的普及,已广 ...
- python api文档生成二维码_使用Python第三方库生成二维码
本文主要介绍两个可用于生成二维码的Python第三方库:MyQR和qrcode. MyQR的使用: 安装: pip install MyQR 导入: from MyQR import myqr imp ...
- 巧用Python的Qrcode库生成二维码大全
二维码介绍 QR 码是二维条码的一种,QR来自英文 "Quick Response" 的缩写,即快速反应的意思,源自发明者希望 QR 码可让其内容快速被解码. QR 码 比普通条码 ...
- 苏彤,你的 Python Flask 编写生成二维码接口写完了
需求背景 本篇博客实战解决一个真是场景,需求描述如下: 为团队其它成员提供一个二维码生成接口,传入文本,返回图片地址,数据存储到 OSS 中. 采用 Python Flask 框架实现,并且使用一个第 ...
- Python之一键生成二维码
目录 二维码编码字符集 二维码基本特性 qrcode 简易模式 全功能模式 数据时代,二维码已经成为我们生活之密不可分的部分,不经意间,我们已处二维码的海洋. 二维码是用某种特定的几何图形按一定规律在 ...
- 在H5中使用qrcode, qrcodejs2生成二维码
在H5中使用qrcode生成二维码 安装插件 ```javascript npm install --save qrcode ``` 使用插件 按需引入 //index.html<html> ...
- qrcode——js生成二维码
1.引入 qrcode.min.js(点击下载demo) 2.html: <div id="qrcode"></div> js: var qrcode = ...
最新文章
- 动态表单构建器——建造者模式
- 高校人工智能热的“冷”思考
- caffe apt install
- 干货|针对单个网站的渗透思路(精)
- 蓝桥杯 第十届 JAVAB组 E迷宫
- Linux之dd命令详解
- 卸载docker后部署k8s后docker无法启动问题
- icmp端口_pingtunnel搭建icmp隧道
- 实验一 命令解释程序编写
- 今日头条品质优化 - 图文详情页秒开实践
- 做开源,兴趣是最好的源动力 | 龙蜥开发者说第1期
- 怎么把录音导入库乐队_库乐队导入电脑版 苹果库乐队怎么导入歌
- 安装win10 我们无法格式化所选分区的解决办法
- SHON WEBB:真正的自律,就是将这两件事做到极致
- 知乎首页实战之下载知乎App模块
- 《VC++深入详解》第三章
- 丢掉迅雷,1M的下载神器让你下载飞起来,NDM/XDM分享
- P1486 [NOI2004]郁闷的出纳员
- Virbox Protector AAB 加固-兼容 Google Play 上架
- 空字符'\0'与字符串
热门文章
- ”从生命起源到智慧宇宙“全文(英文论文)
- 量子计算机生命,100年后,量子计算机将创造生命,生命的起源或将被改写
- python3.6实现随机森林算法(可视化)机器学习算法(赵志勇)学习笔记
- 基于SpringBoot 适合学习的开源社区平台
- web开发学习,HTML标签语义化
- Linux SDIO WIFI Marvell8801/Marvell88w8801(三) --- Linux驱动以及组件的使用
- 补码一位乘法(Booth算法)
- 可执行的移动端网站seo技术
- Windows cmd 进入其他盘
- java socket实现的简易的聊天工具demo