python生成梦幻二维码

科学的每一项重要进展都得力于大胆的想象力。  约翰·杜威

大家好,我是今天的值班小编,还是上一次的我,python爱好者一枚。今天仍然是没有上班,在家抵御疫情。

看完小说《天龙八部》之后,闲着没事干,学习了一下二维码相关的知识,给朋友们分享一下。

背景知识


python生成梦幻二维码

说起二维码,朋友们都不会陌生了,它已经成为日常生活不可或缺的工具,各种场合都可以见到,一天起码可以见到十几次,比如购物、乘车、健身、按摩、传单、名片、公众号、电视、工作等等,此外,二维码还可以应用于各种与生活息息相关的领域以及工厂、流通等各种商业领域。毫不夸张地说,二维码是新时代的四大发明。事实上,来自"一带一路"沿线的20国青年曾经评选出了中国的"新四大发明":高铁、扫码支付、共享单车和网购。而在这“新四大发明“的场景中,都离不开二维码的身影。


python生成梦幻二维码


扯了这么多,先来看下怎样用python来生成二维码吧。

环境准备

windows10

pip 安装 myqr这个二维码的库。


命令行

myqr这个库很是神奇,安装之后既可以在python代码中进行调用,也可以在cmd命令行里面直接使用。

win+r 打开cmd窗口,然后输入 myqr -h 就可以看到各种参数了。


python生成梦幻二维码

由于本文主要是讲在python中怎样生成二维码,就先不展开讲cmd里面的操作了。

python代码

python代码写起来只有三行,其中还有二行是用来import库的,生成二维码的代码本质上只有一行:


python生成梦幻二维码

值得一提的是myqr.run()的各种参数,小编在这里列举一下:

words 参数: 可以是文字,也可以是网址,其实没啥区别,本质上都是文字。至于你说网址扫了之后有自动跳转功能,其实是扫码软件来实现跳转操作的。

version参数: 取值范围为【1,40】,闭区间。参数名叫version,看起来是”版本“的意思,其实它决定的是生成的二维码的长宽,真是给这个库的开发人员跪了,名字起得这么诡异难以理解。

level参数: 可以取值为 L/M/Q/H,意思分别是L(Low), M(Medium) or Q(Quartile), H(High),默认值为H,它设置的是二维码的纠错水平,肯定是越高越好了。

save_name参数和save_dir参数就比较好理解了, 就是生成出来的二维码文件要保存到硬盘的哪个位置。


python生成梦幻二维码

梦幻二维码

前面三行python代码生成出来的就是传统的黑白两色的二维码了, 要想让生成的二维码变得梦幻起来,就需要一点神操作了。

首先要找一个动态图片(gif格式),越梦幻越好。比如这张皮卡丘的动图吧,保存为1.gif:


python生成梦幻二维码

然后把上面的python代码稍稍修改一下, 增加两个参数:

picture="1.gif" 表示使用1.gif作为背景来制作二维码;

colorized=True 表示支持彩色二维码。

增加了这两个参数之后,重新生成一下,可以看到,生成的速度明显变慢了,所谓“慢工出细活”,还是有一定道理的。让我们来看看梦幻二维码的效果吧:


[由于平台限制,这段内容无法播出]


二维码原理

看到这里,其实这篇文章就可以结束了,python写写代码实在是太简单了;但是,小编还是想再讲几块钱的,关于二维码的原理。

感兴趣的朋友们就继续往下看吧。

先来看下二维码的结构图:


[由于平台限制,这段内容无法播出]


啥?您说英文的看不懂,咱还有中文版的,不过小编还是推荐大家仔细看英文版的,毕竟是原汁原味的:


[由于平台限制,这段内容无法播出]


从上图中可以看到,一个完整的二维码包括以下几个部分:空白区、位置探测图形及其分隔符、定位图形、校正图形、格式信息、版本信息、数据和纠错码字。

下面小编就分别来解释这几个部分的作用:

位置探测图形、位置探测图形分隔符、定位图形:用于对二维码的定位,这几个图形共同组成了一个口字形的稳定结构,这也就是为什么二维码不管正着扫、反着扫、斜着扫都能正常扫出来的本质原因。

校正图形:用于进一步校正坐标系。

格式信息:表示该二维码的纠错级别,分为L、M、Q、H,上文中已经讲过了。

版本信息:即二维码的长宽,QR码符号共有40种长宽的矩阵,从21x21(版本1),到177x177(版本40),版本越高,二维码也就越大。

数据和纠错码字:用于修正二维码损坏带来的错误。


python生成梦幻二维码


后记

在这篇文章中,小编给大家分享了如何用python生成梦幻二维码,然后又讲解了二维码的一部分原理,至于二维码的全部原理还是很复杂的,希望朋友们可以自行学习下去。


分享到:


相關文章: