请用python代码表示什么_深度解析什么是二维码?用Python 5行代码生成个性二维码...

二维码满天飞,

随便扫一扫就能扫到不一样的内容。

有没有好奇什么是二维码?

又是怎么生成的呢?

今天我们就用python 5行代码 生成一个二维码,并且是个性的二维码,想你所想的,先看效果图,准备好微信扫一扫,看看扫到什么惊喜呢?

普通的二维码

是不是有一点单调,虽然可以修改其颜色

修改颜色和大小

带有背景图的二维码

背景图二维码是不是更容易宣传自己的产品呢?

背景图片可以是任意的图片。

动图二维码

看到这样的二维码

是不是特别想扫一扫呢?

Python代码实现

Python中有一个专门生成二维码的库,叫MyQR. 安装非常简单,直接使用pip安装。如果使用的是Python三剑客(扫码上面加入了解),直接点击按钮安装即可

pip install MyQR

安装完成以后直接倒入即可,如下代码。

from MyQR import myqr

然后使用库中的run方法生成二维码,代码如下。也可以扫码加入,手把手教你如何生成个性二维码。

#普通的二维码

myqr.run(

words,

save_name= '普通的二维码.png'

)

#带图片

myqr.run(

words,

picture = 'xxx/logo2.png',

colorized = True,

save_name = 'logon_Python.png'

)

#动图

myqr.run(

words, #需要生成的二维码网址链接

picture="xxx/logo/dongtu.gif",  #动态图

colorized=True, #彩色的还是黑白的

save_name='Python2.gif', #保存为.gif格式否则不是动图

)

什么是二维码?

二维码 (2-dimensional bar code),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的。

因此,在转换的过程中,离不开编码压缩方式。在许多种类的二维条码中,常用的码制有:Data Matrix, Maxi Code, Aztec, QR Code, Vericode, PDF417, Ultracode, Code 49, Code 16K等。

二维码在现实生活中的应用越来与普遍,归于功于 QR code 码制的流行。我们常说的二维码就是它。所以,二维码又被称为 QR code。

QR code 是一种矩阵式二维条码(又称棋盘式二维条码)。它是在一个矩形空间通过黑、白像素在矩阵中的不同分布进行编码。在矩阵相应元素位置上,用点(方点、圆点或其他形状)的出现表示二进制“1”,点的不出现表示二进制的“0”,点的排列组合确定了矩阵式二维条码所代表的意义。

二维码结构

我们的目的是要使用 Python 生成 QR 码,那我们需要先了解二维码(QR 码)的结构。根据标准(ISO/IEC 18004),我们可以了解到 QR 码结构如下:

1) 功能图形

功能图形是不参与编码数据的区域。它包含空白区、位置探测图形、位置探测图形分隔符、定位图形、校正图形五大模块。

空白区

空白区顾名思义就是要留空白。因此,这里不能有任何图样或标记。这样才能保证 QR 能被识别。

位置探测图形

这个有点类似中文的“回”字。在 QR 码中有个这样的标识,它分别的左上、右上和左下角。作用是协助扫描软件定位 QR 码并转换坐标系。我们在扫描二维码的时候,不管是竖着扫、横着扫、斜着扫都能识别出内容,主要是它的功劳。

位置探测图形分隔符

主要作用是区分功能图形和编码区域。

定位图形

它由黑白间隔的各自各自组成的线条。主要用于指示标识密度和确定坐标系。原因是 QR 码一种有 40 个版本,也就是说有 40 种尺寸。每种二维码的尺寸越大,扫描的距离就越远。

校正图形

只有 Version 2 及以上的QR码有校正标识。校正标识用于进一步校正坐标系。

2) 编码区域

编码区域是数据进行编码存储的区域。它由格式信息、版本信息、数据和纠错码字三部分构成。

格式信息

所有尺寸的二维码都有该信息。它存放一些格式化数据的信息,例如容错级别、数据掩码,和额外的自身 BCH 容错码。

版本信息

版本信息是规定二维码的规格。前面讲到 QR 码一共有 40 种规格的矩阵(一般为黑白色),从21x21(版本1),到177x177(版本40),每一版本符号比前一版本 每边增加4个模块。

数据和纠错码

主要是存储实际数据以及用于纠错码字。

二维码绘制过程

二维码已经是有一套国际标准,绘制二维码过程的严格按照标准来执行。这个过程是比较复杂,我自己也是看了大概,然后总结出大致绘制过程。如果你想深入了解绘制细节,可以阅读标准。

二维码的绘制大概过程如下:

1)在二维码的左上角、左下角、右上角绘制位置探测图形。位置探测图形一定是一个 7x7 的矩阵。

2)绘制校正图形。校正图形一定是一个 5x5 的矩阵。

3)绘制两条连接三个位置探测图形的定位图形。

4)在上述图片的基础上,继续绘制格式信息。

5)接着绘制版本信息。

6)填充数据码和纠错码到二维码图中。

7)最后是绘制蒙版图案。因为按照上述方式填充内容,可能会出现大面积的空白或黑块的情况,导致扫描识别会十分困难。所以需要对整个图像与蒙版进行蒙版操作(Masking),蒙版操作即为异或 XOR 操作。在这一步,我们可以将数据排列成各种图片。

声明:文章收集于网络,如有侵权,请联系小编及时处理,谢谢!

欢迎加入本站公开兴趣群

软件开发技术群

兴趣范围包括:Java,C/C++,Python,PHP,Ruby,shell等各种语言开发经验交流,各种框架使用,外包项目机会,学习、培训、跳槽等交流

QQ群:26931708

Hadoop源代码研究群

兴趣范围包括:Hadoop源代码解读,改进,优化,分布式系统场景定制,与Hadoop有关的各种开源项目,总之就是玩转Hadoop

QQ群:288410967

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值