python 二维码_python 一行命令生成二维码

5d031a211402c40ed6f961bd8ede6171.png

运行一波:现在我们几乎每天都在使用二维码,添加个朋友,支付个费用,登录个网站等等都使用到了二维码,你会不会有时候在想,为什么对方不给你二维码扫一下,加个好友呢?

1c8efe0528feb968b11ad96f5a72647d.png

哦,不是,你会不会有时候在想,为啥每一张看似差不多的二维码图片,里面都承载了各式各样的信息呢?又如何使用 Python 去生成自己想要的二维码呢?

那么接下来,就是:

学习 Python 的正确姿势

23f57e2671c82b99af5aa225378a317e.png

先来简单说下,其实每一张二维码,都可以看成是一种数据的加密,在这里面的数据,可以通过某种编码,转化成黑白不同的点,然后按顺序排列其中。

396780955b76e62321bf3b1e4f04c335.png

当我们去识别二维码的时候,其实就是把这些数据转化回来。

有时候你会发现二维码把它打歪,也能照常识别:

8b6ef7d473d71c545686143b4cb6d0cf.png

02c0187dd0a06fbc2cc9ffdb519a52f5.png

这是因为有定位的标识,比如这上面的三个大方块就是用来定位的。

有时候你也会发现,有些二维码看起来比较简单,而有的却很复杂的样子:

8b6ef7d473d71c545686143b4cb6d0cf.png

a1af58fefb0bbef5e9c3575ee7ed1b77.png

这要取决于不同的输入数据编码类型,版本,以及纠错级别。

其中版本分 1-40 个级别,版本越高,能存储的数据就越多,用公式来表示就是这样:vx4+17 。

而纠错级别又分为 L、M、Q、H,有时候你可能看到有些二维码整的花里胡哨,或者有的地方缺失了还是能被识别,这可能是这张二维码的容错级别比较高。

而级别越低,纠错能力越低,但是能存储更多的数据。所以一个二维码,最大可以有 177x177 个矩阵,也就是第 40 版本,而纠错级别是最 low 的哪一个。

40x4 + 17:

5d9dd26ef36444ddc0baf2d8e858ad2c.png

65ee4999db0ebe8dc746d9ecc5e5d104.png

而这些格式信息,都可以在三个大方块的边沿定义,然后剩下的区域就是来放数据码和纠错码的,你可以把每个小方块看成一个 bit,0 代表白色, 1 代表黑色。

那如果有些地方很多 1 ,不就都特么黑了么?这时候还需要用掩码来掩一下黑黑的地方,这样才有利于机器的识别。

恩,可能你已经被我整懵了。

5522d05c7e2f35749a7024a3ea7feaec.png

知道了二维码这么几个东东之后,我们接下来玩玩 Python 生成二维码和识别吧。

有一个 qrcode 库生成二维码很是方便,可以使用 pip 先安装一下:

pip install qrcode

ubutnu 可以使用 apt install:

sudo apt install python3-qrcode

接着就可以直接使用 qr 命令来生成二维码了:

5d5dfa1d23ee1d71a616c65626fa345b.png

一行命令就搞定啦,是不是贼方便,当然,如果你要定义一些复杂一些的,比如定义我们刚刚说的纠错级别,版本等,我们可以导入 qrcode 这个库,然后你可以自己写几行代码定义一下:

dd622eb08a1399300437ecde05eee344.png

运行一波:

c4684fbd2f02e3169dd9f66f9c67fb64.png

刚刚我们说了,二维码可以容错,所以可以让它变得花里胡哨一些,比如小帅b公众号中文末常留下的这玩意:

bee7166effbbe1eac9219604db85865f.gif

把它们融合起来可以是这样的:

8ae2c414b50a377141016b3eecf72107.gif

变成彩色也是可以的:

d705dcc2ca3cb5074ee1e185e322ef60.gif

而这,也是可以使用一行命令实现:

5dd537f8ff84d108e3bb3144a11f3fc7.png

这里用到的是 myqr 的库,其中 -v 可以指定二维码版本,-l 指定纠错级别, -c 可以显示彩色二维码, -n 可以指定生成的二维码名称。

像我刚刚那样生成的二维码,只需要一个地址,一张 gif ,然后通过这样的命令就可以实现了:

d2f3ac71d3a9000f8beb9046d8a0b4e4.png

如果你想识别二维码的话,可以使用 pyzbar 来实现。

比如有这么一张二维码:

48e90a18d4f2ff5a0a466b131e84f7c3.png

可以通过 opencv 读取这张图片,然后使用 pyzbar 进行解码:

49d7eada8f5eaa55d5db6030b984da3b.png

ok,以上就是小编今天给你带来的分享, 这里小编发一波福利需要可以点击下方链接领取

PYTHON进阶资料 面试必备笔记 源代码 进阶视频 爬虫实战 高端项目实战免费领取​shimo.im
b83c32536b86342a1acac35db4f33797.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值