python之qrcode模块生成二维码
用Python的qrcode包来生成二维码很简单
一、前期准备:
- pip install qrcode
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: img.save(f)
生成的二维码:
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 qrcode data = '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 plt def 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 = 6 size_w = int(img_w / factor) size_h = int(img_h / factor) icon_w, icon_h = icon.size if icon_w > size_w: icon_w = size_w if 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() # 保存img img.save(file_name) return img if __name__ == '__main__': getQRcode("世情薄,人情恶,雨送黄昏花易落。晓风干,泪痕残,欲笺心事,独语斜阑。" "难,难,难!人成各,今非昨,病魂常似秋千索。角声寒,夜阑珊,怕人寻问,咽泪装欢。瞒,瞒,瞒!", 'my.png')
最后,送你一首宋词,扫码免费得!!!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
左手VS PK 右手IDEA
近日愈发觉得编程是一件有趣的事。 三年前退伍时,还没有确定要继续干这行。去了北京之后,决定写代码吧。Why? 我是一个唯物主义者。 过去两年,一直抱有的念头是,怎么着也要至少干个三年,再寻求不写代码的人生道路。 可是如今,当逐渐深入技术领域,深深觉得自身的技术栈的贫乏,也就愈加想要补强。慢慢的,随着业务的扩增,技术栈也在慢慢积累,也就愈加发现代码其实也是有灵性的。 细节来说,从任何一个语言(如,C#, Python, Java)的语法接触开始,慢慢的在实际工作生活中,使用她们去解决一些问题。而在这个过程中,逐渐的会扩充我们的视野。Why? 因为在解决问题的过程中,我们会接触到许多该领域的其他技术点,数据结构、网络、数据库、操作系统、开发工具、代码管理、性能优化、项目管理等等。不同的语言,可能涉及到的工具和框架不一,但软件开发的核心思想,始终如一。 以上感慨,来源于近日使用.Net(C#)和Spring(Java)来开发一个项目过程中的后知后觉。 而作为开发者的武器之IDE,VS和IDEA都足够优秀,令人不得不喜爱。 末了,关于代码的执业时间题,一切才刚刚开始。 To be Archit...
- 下一篇
Python全栈 Web(定位布局、定位方式)
定位布局: 属性:position 取值: static 默认值 按照文档流布局 relative 相对定位 absolute 绝对定位 fixed 固定定位 只有元素的position属性设置为非默认属性 才算是已经定位的元素 偏移属性: top right bottom left 用来配合已经定位的元素实现位置移动 取值:px top:以元素的上边界为基准移动元素 right:以元素的右边界为基准移动元素 bottom:以元素的低边界为基准移动元素 left:以元素的上左界为基准移动元素 定位方式: 相对定位: 属性:position:relative; 元素采用相对定位时会参照它在文档中原本的位置进行偏移 绝对定位: 属性:position:absolute; 特点: 1.绝对定位的元素,会脱离文档流不占位 2.绝对定位元素会参照离他最近的已经定位的祖先元素进行偏移 3.如果没有已经定位的祖先元素 元素会参照body(浏览器窗口左上角)进行偏移 注意: 所有元素只要脱流就可以设置宽高大小 通常使用“父相子绝”的方式页面布局 限制其他元素的布局方式 浮动和绝对定位点都可以实现元素...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果