Python玩转二维码,炫酷!

开发 前端
二维码(Quick Response Code)几乎已经渗透到我们日常生活的每一个角落。本文分享如何使用Python生成各种炫酷二维码。

二维码(Quick Response Code)几乎已经渗透到我们日常生活的每一个角落。本文分享如何使用Python生成各种炫酷二维码。

二维码(Quick Response Code)几乎已经渗透到我们日常生活的每一个角落。

二维码是 1994 年发明的一种矩阵条形码。

实际上,二维码通常包含指向网站或应用程序的定位器、标识符或跟踪器的数据。

二维码使用四种标准化编码模式(数字、字母数字、字节/二进制、汉字)来高效存储数据。

二维码的结构

从上图可以看出,二维码结构整体分为功能模式和编码区。功能模式细分为:空白区、位置探测图形、分隔符、图形定位、图形矫正;而编码区又细分为:格式信息、版本信息、数据、纠错码字。我们简单了解一下各部分的作用:

  • 空白区:留空,无需做任何处理
  • 位置探测图形:辅助扫描软件定位二维码
  • 分隔符:区分功能模式和编码区
  • 图形定位:指示标记的密度并确定坐标系
  • 图形矫正:校正图形的数量和位置
  • 格式信息:存储格式化数据信息
  • 版本信息:二维码规格,40个规格的二维码符号矩阵
  • 数据和纠错码字:实际保存的二维码信息和纠错码字

本文用到的第三方库:qrcode, myqr, pillow, zxing

首先在终端中安装这些库:

pip install qrcode myqr pillow zxing

python中的二维码

import qrcode
data = 'https://www.baidu.com'
image = qrcode.make(data=data)
image.show()
image.save("baidu.png")

生成的二维码如下图:

进阶

  • 大小和颜色
import qrcode


def plotQR(box_size, border, fill_color,back_color):
    qr = qrcode.QRCode(
        versinotallow=2,
        error_correctinotallow=qrcode.constants.ERROR_CORRECT_L,
        box_size=box_size,
        border=border,
    )
    data = 'https://www.baidu.com/'
    qr.add_data(data=data)
    qr.make(fit=True)
    image = qr.make_image(fill_color=fill_color , back_color=back_color)
    fn = f"baidu_{box_size}_{border_size}_{fill_color}_{back_color}.png"
    image.save(fn)
    return fn
exampleList = [
    (15,3,'blue','white'),
    (15,3,'red','green'),
    (10,2,'yellow','grey'),
    (5,1,'pink','black'),
]
[plotQR(*arg) for arg in exampleList]

结果如下:

baidu_15_3_blue_white.png:

baidu_15_3_red_green.png:

baidu_10_2_yellow_grey.png:

baidu_5_1_pink_black.png

  • 背景图

myqr是另外一个二维码相关的库,它可以生成带背景图的二维码。

from MyQR import myqr

myqr.run(
    words="https://baidu.com/",
    versinotallow=1,
    picture="bg.png",
    colorized=True,
    save_name="baidu_bg.png",
)

上图生成的二维码:

当然把背景图换成动态图(gif),也可以生成动态的二维码。😺😺😺

识别二维码图片

上面是生成二维码的示例,下面是识别二维码的示例:我们来验证下是否能成功!

# 方法一

import zxing
reader = zxing.BarCodeReader()
barcode = reader.decode("001.png")
print(barcode.parsed)

# 方法二
import cv2
import os
img = cv2.imread("001.png")
# cv2.imshow("imge", img)
det = cv2.QRCodeDetector()
val, pts, st_code = det.detectAndDecode(img)
print(val)

总结

二维码无处不在,你的二维码是否让人眼前一亮?赶紧告诉你的小伙伴python可以创建读取二维码吧!

责任编辑:华轩 来源: 哈希编程
相关推荐

2022-03-24 09:43:29

二维码二维码修改器github

2024-06-26 08:46:45

2013-01-30 12:16:49

二维码NFC近场通讯

2023-11-17 09:07:51

.NET生成二维码识别二维码

2017-02-21 09:17:46

二维码漏洞

2023-11-17 15:44:06

C++库生成二维码

2011-12-06 16:40:45

二维码快拍二维码灵动快拍

2014-03-05 14:41:55

二维码登录

2012-04-01 09:53:13

二维码

2015-09-24 09:56:19

.NET二维码

2020-10-08 18:48:02

二维码安全应用安全网络攻击

2015-10-28 13:33:50

二维码条形码扫描源码

2023-08-08 14:16:07

二维码开发鸿蒙

2024-06-03 10:33:08

2011-11-24 16:00:23

信息图QR码二维码

2020-10-26 11:09:42

二维码网络犯罪应用安全

2013-10-29 09:46:05

二维码

2013-03-27 16:13:17

Android开发Android二维码生QR生成

2011-08-30 17:42:02

Kuapay二维码移动支付

2014-08-27 08:59:28

点赞
收藏

51CTO技术栈公众号