二维码在生活的使用场景与频率是越来越高了,以前的主要应用在支付、点餐、取快递等各场景,现在因为疫情的影响,行程码、核酸码、各地健康码等应时而生,相比于传统的条形码,其能承载更多的信息,二维码的历史及原理不是我们今天的重点,感兴趣的小伙伴可以自行google;今天我们就来看一下,如何在Python环境下生成我们想要的二维码。
1.安装模块:
pip install qrcode
验证:
D:\code\wusuowei>pip show qrcode
Name: qrcode
Version: 7.3.1
Summary: QR Code image generator
Home-page: https://github.com/lincolnloop/python-qrcode
Author: Lincoln Loop
Author-email: info@lincolnloop.com
License: BSD
Location: d:\software_install\python39\lib\site-packages
Requires: colorama
Required-by:
使用命令pip show qrcode
,查看是否安装成,如果输出上面信息就代表我们成功安装了qrcode
模块,信息里面包含了模块的名称、版本号、总结描述、主页、作者及其联系方式等诸多信息;
2. 第一个二维码
代码:
`import qrcode
def gen_image(text, name):
img = qrcode.make(text)
with open(name, ‘wb’) as f:
img.save(f)
if name == ‘main’:
test = ‘I love China’
test_png_name = ‘test.png’
gen_image(test, test_png_name)
解读:
第1行:引入模块:qrcode ,这一步是建立在安装成功的基础之上的
第3行:定义了一个函数gen_image
,这个函数所需两个参数:
-
text:待转换的文本;
-
name:待生成二维码图片的文件名;
第4行:img:二维码数据信息;
第5~6行:将数据信息写入图片并保存;
第9行:if __name__ == '__main__':
:控制代码执行,固定格式;
第10行:定义了一个变量test,待转换的文本,变量值为: ‘I love China’;
第11行:定义了一个变量test_png_name ,生成文件的名称,变量值为:‘test.png’;
第12行:调用函数gen_image(test, test_png_name)
,并将刚定义的两个变量作为参数传值;
以上就是代码的解析,接下来我们就要运行代码获取结果了:
结果:
验证两个点:
二维码图片生成:
二维码信息正确;
由上可以看到我们的图片及二维码都成功生成了,验证二维码信息,我们可以通过手机浏览器扫描模式读取二维码信息,下图就是我扫描获取的结果:
3.动态根据自己输入信息生成二维码
这里需要借助input函数获取录入值的数据信息
代码:
import qrcode
def gen_image(url, name):
img = qrcode.make(url)
with open(name, 'wb') as f:
img.save(f)
if __name__ == '__main__':
# test = 'I love China'
# test_png_name = 'test.png'
test = input("请输入要转换的数据: ")
test_png_name = input("请输入保存的文件名(例如:test.png): ")
gen_image(test, test_png_name)
解读:
第1~~12行:都是原来的,我们在这没做任何修改,只是把第11~12行代码注释掉了,这两行不会参与执行;
第13行:借助input函数获取键盘录入信息,即要转换的数据,并将其赋值给test :
第14行:借助input函数获取键盘录入信息,即要保存的文件名,并将其赋值给test_png_name :
第15行:调用函数,跟之前一样未做变更;
结果:
运行代码,会有信息录入提示,录入正确信息:
生成的结果:
验证点和之前一样这里不再赘述;
这样的话,我们就可以轻松的根据自己想要转换的值直接录入就能生成二维码图片,需要强调的是我们在两个input函数都没做数据校验,也是其中隐藏的一个bug,接下来我们再对这部分做下功能丰富;
4.增加数据校验
代码:
import qrcode
def gen_image(url, name):
img = qrcode.make(url)
with open(name, 'wb') as f:
img.save(f)
if __name__ == '__main__':
# test = 'I love China'
# test_png_name = 'test.png'
test = input("请输入要转换的数据: ")
if not test:
raise ValueError("未录入待转换的数据")
print("如果不录入生成文件名,默认:test.png")
test_png_name = input("请输入保存的文件名(例如:test.png): ")
test_png_name = 'test.png' if not test_png_name else test_png_name
gen_image(test, test_png_name)
解读:
第112行:都是原来的,我们在这没做任何修改,只是把第1112行代码注释掉了,这两行不会参与执行;
第13~15行:
第13行:接收键盘录入数据;
第14~15行:数据校验:如果test为空抛出异常,异常信息为:“未录入待转换的数据”;
第16行:下一步的打印提示;,无实际功能
第17行:接收键盘录入数据;
第18行:数据校验:如果test_png_name 为空,则用默认值:test.png
, 如果不为空就使用录入的信息作为文件名
结果:
场景一:未录入待转换数据:
请输入要转换的数据:
Traceback (most recent call last):
File "D:\code\wusuowei\python_img\batchQrcode.py", line 15, in <module>
raise ValueError("未录入待转换的数据")
ValueError: 未录入待转换的数据
本节我们就简单的做了下最简单二维码的生成与人机交互下生成二维码,并针对代码的每一行都做了详细的解释;
感兴趣的大家可以自己手动敲下代码找下感觉,跟着代码去学习~
有问题欢迎留言,也可以关注微信公众号:魔都吴所谓,获取最新文章及答疑~~~
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/87780.html