二维码介绍

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库生成二维码大全相关推荐

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

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

  2. python利用myqr库生成二维码

    1.今天,来学习一下利用myqr库来生成二维码,首先,先执行命令安装myqr这个库,输入以下命令: pip install myqr 2.安装成功后,在本地的磁盘底下建一个目录,这里我存放的目录为:E ...

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

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

  4. python 调用qrcode库实现二维码识别

    python 实现二维码识别ScanQRcode.py """ 生成二维码保存及对二维码解码输出 运行需要安装相应库 """ import ...

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

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

  6. python中使用qrcode库生成二维码时,填充logo变成黑白色的解决方法。

    python如何生成qrcode的教程已经有很多了,我这里仅仅排一下坑. import qrcode from PIL import Imageqr = qrcode.QRCode(version=1 ...

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

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

  8. 用python制作二维码_用python做一个可视化生成二维码的工具

    用python做一个可视化生成二维码的工具 环境 pip install gooey pip install MyQR 源代码 from gooey import GooeyParser,Gooey ...

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

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

最新文章

  1. 运维人员的补丁盛宴 四月修复微软Adobe漏洞合计过百!
  2. cmos逻辑门传输延迟时间_CMOS和TTL都有哪些区别?图腾柱电路又是什么,详情进来一瞧!...
  3. 《Apache Kafka实战》读书笔记-调优Kafka集群
  4. freebsd 自动启动服务器,教程/FreeBSD启动脚本
  5. PM2怎么保持Node应用程序永久活动?
  6. 3D变形tranform(附实例、图解)
  7. 总之就是不太可爱(思维严谨性的考验)
  8. NPDP第四章 文化、组织与团队
  9. nsga2 matlab,NSGA2算法特征选择MATLAB实现(多目标)
  10. android仿微信的开门效果
  11. 安卓开发实现悬浮窗显示(全局显示),通过悬浮窗实时监控当前流量
  12. 机器学习的transformer
  13. wireshark学习笔记
  14. 众多mock工具,这一次我选对了
  15. 【jupyter】2、jupyter主题设置
  16. 休闲小趣一一3Dmax“简易教程”——2.1“案例过程”——制作电脑桌与书架
  17. python输出浮点数x的y次方_Python全栈工程师(exercises)
  18. Haxe FD 开发学习
  19. 金色传说:SAP-ABAP-VK11/VK12/VK13保存时增强
  20. Ubuntu16.04声卡配置

热门文章

  1. (转)redis常用命令及客户端的使用
  2. 2023面试题汇总二
  3. python处理数据可视化_数据整理101:使用Python提取,处理和可视化NBA数据
  4. 关于跳槽,是我心浮气躁?还是我确实该离开了?
  5. 元宇宙通证-三、国内外名家眼中的元宇宙
  6. css 双飞翼布局(flex 、float)和 圣杯布局
  7. Java学习_从常用类到多线程引入
  8. 内核级python:调试Python编译器源码
  9. vue 替换换行符为p标签
  10. AVPlayer那些坑