Python玩转二维码,炫酷!

2023年 12月 25日 38.7k 0

二维码(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可以创建读取二维码吧!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论