巧用Python的Qrcode库生成二维码大全
二维码介绍
QR 码是二维条码的一种,QR来自英文 “Quick Response” 的缩写,即快速反应的意思,源自发明者希望 QR 码可让其内容快速被解码。
QR 码 比普通条码可存储更丰富的信息,包括对文字、URL 地址和其他类型的数据加密,亦无需像普通条码般在扫描时需直线对准扫描器。
QR码呈正方形,只有黑白两色。在3个角落中印有较小的“回”字正方图案,这3个是帮助解码软件定位的图案,用户可不需要对准扫描,任意角度数据都能被正确读取。
QR二维码结构
- 版本信息
version1(21 * 21) , version2 , … , version40(177 * 177) , 一共有40个版本
版本代表每行有多少码元模块,每一个版本比前一个版本增加4个码元模块,计算公式为 (n-1)*4+21,每个码元模块存储一个二进制0或者1。黑色模块代表二进制 “1”,白色模块代表二进制 “0” ,例如 version1 表示每一行有21个码元模块。 - 格式信息
存储容错级别L(7%),M(15%),Q(25%),R(35%)
L水平 7% 的字码可被修正
M水平15% 的字码可被修正
Q水平 25% 的字码可被修正
H水平 30% 的字码可被修正
容错: 允许存储的二维信息出现重复部分,级别越高,重复信息所占的比例越高。
目的: 即使二维码部分被遮住(例如图标等等),一样可以获取全部二维码内容 - 数据和纠错码字
实际保存的二维码信息,和纠错码字(用于修正二维码损坏带来的错误,就是说当二维码部分被遮住时,可以通过纠错码字来找回) - 位置探测图形
用于对二维码的定位。位置探测图形用于标记矩形大小,3个图形确定一个矩形
qrcode二维码生成
学Python用qrcode代码自动生成二维码,再也不用找草料:https://cli.im/ 来生成二维码装逼了
准备工作:
需要使用qrcode库和PIL库,对此没安装的需要安装一下
安装qrcode:命令行窗口输入 pip install qrcode
安装PIL库:pip install pillow
到此可以开始敲代码了
二维码生成只需要三行代码:
import qrcode #导入qrcode库
img = qrcode.make("https://blog.csdn.net/suoyue_py") #生成二维码的网址(文本也行)
img.save("suoyue.png") #生成二维码后保存的图片名
此处有坑: 代码保存,命名文件时不能为 “qrcode.py”,因为 import 时相当于把自己 import 了,故必须修改为非 “qrcode.py”(改为大写的Q都行~~)。
否则运行时会报错:
AttributeError: ‘module’ object has no attribute ‘make’
注意: 保存二维码(图片)需要调用PIL库,故需要安装pillow库,否则也是会报错的
解决小bug后运行正常可在同一文件夹下找到生成的二维码
进阶版:生成带logo的二维码
import qrcode
from PIL import Image
import os,sys#参数 string:二维码字符串;path:生成的二维码保存路径;logo:logo文件路径
def gen_qrcode(string,path,logo=""):qr = qrcode.QRCode(version=2, #控制二维码的大小:(25*25)error_correction=qrcode.constants.ERROR_CORRECT_H, #ERROR_CORRECT_H:30%的字码可被容错box_size=8, #控制二维码中每个小格子包含的像素数border=1 #控制边框(二维码与图片边界的距离)包含的格子数(默认为4) )qr.add_data(string)qr.make(fit=True)img = qr.make_image()img = img.convert("RGBA")if logo and os.path.exists(logo):try:icon = Image.open(logo)img_w, img_h = img.sizeexcept Exception as e:print(e)sys.exit(1)factor = 4size_w = int(img_w / factor)size_h = int(img_h / factor)icon_w, icon_h = icon.sizeif icon_w > size_w:icon_w = size_wif icon_h > size_h:icon_h = size_hicon = icon.resize((icon_w,icon_h),Image.ANTIALIAS)w = int((img_w - icon_w) / 2)h = int((img_h - icon_h) / 2)icon = icon.convert("RGBA")img.paste(icon,(w,h),icon)img.save(path)#调用系统命令打开图片# xdg-open :在用户的首选应用程序中打开文件或urlos.system('xdg-open %s' % path)if __name__ == "__main__":info = "https://blog.csdn.net/suoyue_py" #生成二维码的网址pic_path = "qrsuoyue.png" #生成二维码保存的图片名logo_path = "logo.png" #生成二维码所用的图标gen_qrcode(info,pic_path,logo_path) #调用函数
error_correction: 控制二维码的错误纠正功能。
可取值下列 4个常量:
1.ERROR_CORRECT_L: 7%的字码可被容错
2.ERROR_CORRECT_M(默认): 15%的字码可被容错
3.ERROR_CORRECT_Q: 25%的字码可被容错
4.ERROR_CORRECT_H: 30%的字码可被容错
二维码的容错系数(上面所指的 error_correction)越高,生成的二维码则可允许的残缺率越大,且二维码的数据主要保存在图片的四个角上,所以在二维码中间放一个小图标,对二维码的识别也是不受多大影响的
巧用Python的Qrcode库生成二维码大全相关推荐
- python qrcode库生成二维码的代码
如下内容内容是关于python qrcode库生成二维码的内容,希望能对各位有所用. import qrcode img = qrcode.make('Some data here')高级用法impo ...
- python利用myqr库生成二维码
1.今天,来学习一下利用myqr库来生成二维码,首先,先执行命令安装myqr这个库,输入以下命令: pip install myqr 2.安装成功后,在本地的磁盘底下建一个目录,这里我存放的目录为:E ...
- python之qrcode模块生成二维码
用Python的qrcode包来生成二维码很简单 一.前期准备: pip install qrcode qrcode 依赖 Image 这个包: pip install Image 二.安装好之后就可 ...
- python 调用qrcode库实现二维码识别
python 实现二维码识别ScanQRcode.py """ 生成二维码保存及对二维码解码输出 运行需要安装相应库 """ import ...
- Python使用QRCode模块生成二维码
简介 python-qrcode是个用来生成二维码图片的第三方模块,依赖于 PIL 模块和 qrcode 库. 简单用法 import qrcode img = qrcode.make('hello, ...
- python中使用qrcode库生成二维码时,填充logo变成黑白色的解决方法。
python如何生成qrcode的教程已经有很多了,我这里仅仅排一下坑. import qrcode from PIL import Imageqr = qrcode.QRCode(version=1 ...
- python api文档生成二维码_使用Python第三方库生成二维码
本文主要介绍两个可用于生成二维码的Python第三方库:MyQR和qrcode. MyQR的使用: 安装: pip install MyQR 导入: from MyQR import myqr imp ...
- 用python制作二维码_用python做一个可视化生成二维码的工具
用python做一个可视化生成二维码的工具 环境 pip install gooey pip install MyQR 源代码 from gooey import GooeyParser,Gooey ...
- 基于 Django 使用 qrcode 模块生成二维码
简介: 二维码简称 QR Code(Quick Response Code),学名为快速响应矩阵码,是二维条码的一种,由日本的 Denso Wave 公司于1994 年发明.现随着智能手机的普及,已广 ...
最新文章
- 运维人员的补丁盛宴 四月修复微软Adobe漏洞合计过百!
- cmos逻辑门传输延迟时间_CMOS和TTL都有哪些区别?图腾柱电路又是什么,详情进来一瞧!...
- 《Apache Kafka实战》读书笔记-调优Kafka集群
- freebsd 自动启动服务器,教程/FreeBSD启动脚本
- PM2怎么保持Node应用程序永久活动?
- 3D变形tranform(附实例、图解)
- 总之就是不太可爱(思维严谨性的考验)
- NPDP第四章 文化、组织与团队
- nsga2 matlab,NSGA2算法特征选择MATLAB实现(多目标)
- android仿微信的开门效果
- 安卓开发实现悬浮窗显示(全局显示),通过悬浮窗实时监控当前流量
- 机器学习的transformer
- wireshark学习笔记
- 众多mock工具,这一次我选对了
- 【jupyter】2、jupyter主题设置
- 休闲小趣一一3Dmax“简易教程”——2.1“案例过程”——制作电脑桌与书架
- python输出浮点数x的y次方_Python全栈工程师(exercises)
- Haxe FD 开发学习
- 金色传说:SAP-ABAP-VK11/VK12/VK13保存时增强
- Ubuntu16.04声卡配置