python笔记 利用python qrcode 自动生成二维码
时间:2019-09-09
本文章向大家介绍python笔记 利用python qrcode 自动生成二维码,主要包括python笔记 利用python qrcode 自动生成二维码使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.简单二维码
1 import qrcode 2 3 # 制作二维码实例,可以添加文字,数字,URL 4 qrc = qrcode.make(r'https://www.baidu.com') 5 # 保存二维码 6 qrc.save('d:/qr.png')
2.二维码中加入图片
# 导入图像处理库PIL的image方法 from PIL import Image # qrcode是第三方库,需要pip install qrcode安装 import qrcode # 初步生成二维码图像 qr = qrcode.QRCode(version=None,error_correction=qrcode.constants.ERROR_CORRECT_H,box_size=8,border=4) # 添加二维码信息,可以是文字、数字、url qr.add_data("http://www.baidu.com") # 生成二维码实例 qr.make(fit=True) # 把实例转换成图片 img = qr.make_image() # 把颜色模式转换为RGBA img = img.convert("RGBA") # 打开logo文件,二维码中心logo图片 icon = Image.open("D:/favicon.jpg") # 先得出二维码的宽和高 img_w,img_h = img.size factor = 4 # 通过二维码宽高计算出logo图片宽和高的最大限度 size_w = int(img_w / factor) size_h = int(img_h / factor) # 获取logo的宽和高 icon_w,icon_h = icon.size #比较logo宽高和最大限度宽高,如果超过最大限度就将logo尺寸调整到最大限度 if icon_w >size_w: icon_w = size_w if icon_h > size_h: icon_h = size_h # 重新调整logo的尺寸 Image.NEAREST :低质量 Image.BILINEAR:双线性 # Image.BICUBIC :三次样条插值 Image.ANTIALIAS:高质量 icon = icon.resize((icon_w,icon_h),Image.ANTIALIAS) # 根据logo和图片的长宽确定logo的位置 w = int((img_w - icon_w)/2) h = int((img_h - icon_h)/2) # 将logo颜色模式转换为RGBA icon = icon.convert("RGBA") # 将logo图片粘贴到二维码的指定位置 img.paste(icon,(w,h)) # 保存二维码到指定位置,设置二维码格式 img.save('D:/createlogo.png')
参数含义:
version:值为1~40的整数,控制二维码的大小(最小值是1,是个12×12的矩阵)。 如果想让程序自动确定,将值设置为 None 并使用 fit 参数即可。
error_correction:控制二维码的错误纠正功能。可取值下列4个常量。
ERROR_CORRECT_L:大约7%或更少的错误能被纠正。
ERROR_CORRECT_M(默认):大约15%或更少的错误能被纠正。
ROR_CORRECT_H:大约30%或更少的错误能被纠正。
box_size:控制二维码中每个小格子包含的像素数。
border:控制边框(二维码与图片边界的距离)包含的格子数(默认为4,是相关标准规定的最小值)
原文地址:https://www.cnblogs.com/liqinsan/p/11490955.html
- Elasticsearch集群管理
- 图m着色问题
- Elasticsearch入门介绍
- Elasticsearch聚合 之 Histogram 直方图聚合
- Elasticsearch聚合 之 Date Histogram聚合
- Elasticsearch聚合 之 Terms
- Elasticsearch聚合初探——metric篇
- AngularJS API之$injector ---- 依赖注入
- AngularJS API之extend扩展对象
- AngularJS API之equal比较对象
- Elasticsearch之_default_—— 为索引添加默认映射
- Elasticsearch 动态映射——自动检测
- Elaticsearch REST API常用技巧
- C++拷贝构造函数
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一起来学matlab-matlab学习笔记10 10_1一般运算符
- 每日手撕一道算法题-20. 有效的括号
- 一起来学matlab-数组取值 MATLAB中的字符串符号
- 递归解决遍历问题
- PHP中的include和require
- 一起来学matlab-matlab学习笔记10 10_2一般操作符和数据显示格式
- 一起来学matlab-matlab学习笔记10 10_3关系运算符和逻辑运算符
- 一篇文章学懂Shell脚本,最简明的教程在这里
- 一起来学matlab-matlab学习笔记10 10_5 通用字符串操作和比较函数
- 一个案例彻底弄懂如何正确使用 mysql inndb 联合索引
- 一起来学matlab-matlab学习笔记11 11_2 高维数组处理和运算 squeeze, ind2sub, sub2ind
- matlab结构体 rmfield,arrayfun,structfun,struct2cell,cell2struct
- PHP函数参数传递方法的具体改进技巧
- matlab学习笔记11_3 高维数组处理 filp, shiftdim, size, permute, ipermute
- 看完这篇文章,你的Linux基础就差不多了