python之qrcode模块生成二维码

用Python的qrcode包来生成二维码很简单

一、提前准备:

在cmd 中安装qrcode包库
如果已经安装可不必重复安装,查看已安装包库的方式:
Win+R =>pip list

命令:pip install qrcode

图示如下:

输入上述命令后按Enter即可(按下后会自动开始下载,并且有进度条,因为是从国外下载所以速递较慢。)

qrcode 依赖 Image 这个包:

  • pip install Image

二、安装好之后就可以通过代码实现二维码了

1. 简单生成二维码:

import qrcode //模块导入//调用qrcode的make()方法传入url或者想要展示的内容
img = qrcode.make('http://www.baidu.com')//写入文件
with open('test.png', 'wb') as f:
//将生成的二维码名字为test.png;“Wb”表示以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件,并取别名为fimg.save(f)//保存该生成的图片img.show()//运行后显示二维码

生成的二维码:

import qrcode //模块导入//调用qrcode的make()方法传入url或者想要展示的内容
img = qrcode.make('欢迎来到我的简书')//保存
img.save("text.png")

生成的二维码:


此处并没有使用add_data()添加数据,make_image()生成二维码,而是使用qrcode.make(data)的方式获取im对象。qrcode.make()是qrcode提供简单调用接口。

- 2. 正常生成二维码的步骤:

  • 创建QRCode对象
    add_data()添加数据
    make_image()创建二维码(返回im类型的图片对象)
    自动打开图片,im.show()

- 3. QRCode参数详细说明:

  • version: 一个整数,范围为1到40,表示二维码的大小(最小值是1,是个12×12的矩阵),如果想让程序自动生成,将值设置为
    None 并使用 fit=True 参数即可。
  • error_correction: 二维码的纠错范围,可以选择4个常量:

··1. ERROR_CORRECT_L 7%以下的错误会被纠正
··2. ERROR_CORRECT_M (default) 15%以下的错误会被纠正
··3. ERROR_CORRECT_Q 25 %以下的错误会被纠正
··4. ERROR_CORRECT_H. 30%以下的错误会被纠正

  • boxsize: 每个点(方块)中的像素个数
  • border: 二维码距图像外围边框距离,默认为4,而且相关规定最小为4

4. 参数配置后生成自定制二维码

import qrcodedata = 'http://www.baidu.com/'
img_file = r'保存路径'# 实例化QRCode生成qr对象
qr = qrcode.QRCode(version=1,error_correction=qrcode.constants.ERROR_CORRECT_H,box_size=10,border=4
)
# 传入数据
qr.add_data(data)qr.make(fit=True)# 生成二维码
img = qr.make_image()# 保存二维码
img.save(img_file)
# 展示二维码
img.show()

三、额外添加

往往我们看到的二维码中间都有一张图片或者用户头像,如何才能生成这样一张二维码?
利用PIL库中image模块的paste函数
img.paste(path,where,mask=None)
其中,img为image对象;path为所添加图片;where为tuple,如:(x,y),表示图片所在二维码的横纵坐标

import qrcode
from PIL import Image
import matplotlib.pyplot as pltdef getQRcode(data, file_name):qr = qrcode.QRCode(version=1,error_correction=qrcode.constants.ERROR_CORRECT_H,box_size=5,border=4,)# 添加数据qr.add_data(data)# 填充数据qr.make(fit=True)# 生成图片img = qr.make_image(fill_color="green", back_color="white")# 添加logo,打开logo照片icon = Image.open("1.jpg")# 获取图片的宽高img_w, img_h = img.size# 参数设置logo的大小factor = 6size_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_h# 重新设置logo的尺寸icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS)# 得到画图的x,y坐标,居中显示w = int((img_w - icon_w) / 2)h = int((img_h - icon_h) / 2)# 黏贴logo照img.paste(icon, (w, h), mask=None)# 终端显示图片plt.imshow(img)plt.show()# 保存imgimg.save(file_name)return imgif __name__ == '__main__':getQRcode("世情薄,人情恶,雨送黄昏花易落。晓风干,泪痕残,欲笺心事,独语斜阑。""难,难,难!人成各,今非昨,病魂常似秋千索。角声寒,夜阑珊,怕人寻问,咽泪装欢。瞒,瞒,瞒!", 'my.png')

最后,送你一首宋词,扫码免费得!!!

原作:SlashBoyMr_wang
来源:简书

关于Qrcode的学习相关推荐

  1. python学习 —— 使用QRCode包生成二维码

    我使用的是python3,最简单的方法就是使用QRCode,如果没有安装QRCode package,那么可以使用下面命令进行安装: pip3 install QRCode 然后,测试一下: from ...

  2. KING_C#学习之QRCode二维码(一)——基础知识扫盲

    在移动互联网快速发展下,二维码的应用非常广泛,且前景甚好.现在的登陆.分享等功能都可以利用二维码快速便捷地把信息传送出去,我个人是比较喜欢用这个技术,所以凭着兴趣以及二维码的强大,对二维码的相关知识做 ...

  3. 转载:使用 OpenCV 识别 QRCode

    原文链接:http://coolshell.cn/articles/10590.html#jtss-tsina 识别二维码的项目数不胜数,每次都是开箱即用,方便得很. 这次想用 OpenCV 从零识别 ...

  4. 2017-2018-2 20179204《网络攻防实践》第八周学习总结

    第1节 教材学习内容总结 本周学习了教材第八章的内容. 1.1 linux操作系统基本框架概述 发展出众多操作系统发行版:ubuntu.debian.fedora.centos.rhel.opensu ...

  5. 学习:二维码、QR码、J4L-QRCode、java

    转自:http://baijinshan.iteye.com/blog/1004554 学习:二维码.QR码.J4L-QRCode.java Java企业应用网络应用Rails应用服务器  开源码 J ...

  6. python训练营微信公众号真实性_用python进行微信公众号开发(仅测试学习)

    今天看到篇教程,是用python开发微信公众号的,觉得有意思,就敲代码实现了一下,成功后更觉得好玩,故记录,方便开发深入时使用. 基础背景介绍: 首先得有个人微信号(没有自行注册),为方便测试学习: ...

  7. 初探swift语言的学习笔记一(基本数据类型)

    作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/28258805 转载请注明出处 如果觉得文章对你有所帮助,请通过留言 ...

  8. 学习响应式BootStrap来写融职教育网站,Bootsrtap第十四天,PK模块的开发

    <!DOCTYPE html> <html lang="zh_CN"> <head><meta charset="UTF-8&q ...

  9. 学习响应式BootStrap来写融职教育网站,Bootsrtap第十三天讲师列表栏目

    <!DOCTYPE html> <html lang="zh_CN"> <head><meta charset="UTF-8&q ...

最新文章

  1. 局域网瘫痪 傀儡主机的DDoS***
  2. c2064 项不会计算为接受0个参数的函数_【JS必知必会】高阶函数详解与实战
  3. RHEL 5 密码破解和防止别人通过单用户模式修改密码
  4. 海思 HI35* rtsp服务器
  5. 查拉斯图拉的“没落”
  6. ITextSharp生成PDF
  7. Go的内存管理(最新学习)
  8. 无刷电机反电动势过零检测
  9. 闰年流程图——18网三杨捷
  10. AJax错误WebForm1没有定义的javascript错误的解决方法
  11. 常用连接linux工具
  12. 在 Hexo 中使用 iconfont 图标
  13. 走进中关村软件园-光环敏捷PMI-ACP落地分享会
  14. html页面禁止保存图片,JavaScript 禁止用户保存图片的实现代码
  15. 网上值得注册的论坛(最新整理)
  16. #天府TV#《什么是成都》爆红背后,还有上千热泪盈眶留言!
  17. 浦发银行面试笔试经历
  18. 阿里云 企业邮箱域名解析(DNS)
  19. 钢筋计数VOC数据集
  20. oracle11g ocr voting,Oracle 11g RAC OCR,VOTING DISK存储全部损坏,利用自动备份,恢复到新位置...

热门文章

  1. 印花弹性白胶浆外观品质控制方法
  2. 华为拓扑---***的配置
  3. Incorrect string value: ‘\xE5\xB0\x8F\xE9\x9B\xA8...‘ for column ‘xxx‘ at row 1
  4. Android Studio第一次作业:APP门户界面设计
  5. VSCode快速初始化html文件
  6. Codeforces Round #777 (Div. 2) 题解
  7. 中国耳机能否把AirPods拉下铁王座,全看一颗“芯”
  8. Studio One5数字音乐制作工具
  9. 如何降低开发团队之间的沟通成本
  10. 【听】乌合之众,团队or团伙