最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Python如何生成優(yōu)雅的二維碼

 更新時(shí)間:2022年09月07日 08:38:18   作者:ZackSock  
二維碼作為一種信息傳遞的工具,在當(dāng)今社會(huì)發(fā)揮了重要作用。從手機(jī)用戶登錄到手機(jī)支付,生活的各個(gè)角落都能看到二維碼的存在。下面我們就來看看Python如何生成一個(gè)優(yōu)雅的二維碼吧

二維碼作為一種信息傳遞的工具,在當(dāng)今社會(huì)發(fā)揮了重要作用。從手機(jī)用戶登錄到手機(jī)支付,生活的各個(gè)角落都能看到二維碼的存在,那么我們?nèi)绾巫约荷梢粋€(gè)二維碼呢?如果使用Python,我們可以很快的生成一個(gè)二維碼,我們可以自己定義二維碼包含的信息。這些信息可以是文字、圖片,也可以是網(wǎng)站。下面我們就來看看如何生成一個(gè)二維碼。

一、使用MyQR生成二維碼

生成二維碼的方式多種多樣,我們先來看看使用MyQR模塊如何生成一個(gè)二維碼。

(1)模塊安裝

在開始使用之前我們需要先安裝該模塊。這里使用pip直接下載,這里選用的是國(guó)內(nèi)的源:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ myqr

安裝完成后我們就可以開始使用了。先生成一個(gè)最簡(jiǎn)單的二維碼:

from MyQR import myqr        # 注意區(qū)分大小寫
myqr.run(words='Do not go gentle into that good night!')    # 生成二維碼

在我們運(yùn)行這個(gè)程序后,py文件同目錄下會(huì)生成圖片qrcode.png,該圖片就是我們的二維碼圖片,掃出來就是我們上面設(shè)置的文本信息了。

(2)生成一個(gè)圖像二維碼

我們?nèi)粘I钪械亩S碼都比較單調(diào),有純二維碼,整個(gè)二維碼只有黑白方塊;也有帶圖片的二維碼,通常是在二維碼中心放置一個(gè)圖片,而我們現(xiàn)在要做的是一個(gè)整體是一張圖片的二維碼。也就是將一張圖片作為背景。這種二維碼實(shí)現(xiàn)起來也非常簡(jiǎn)單:

from MyQR import myqr
myqr.run(
    words='http://www.baidu.com',    # 包含信息
    picture='lbxx.jpg',            # 背景圖片
    colorized=True,            # 是否有顏色,如果為False則為黑白
    save_name='code.png'    # 輸出文件名
)

生成二維碼效果如下:

可以看到,這里我們二維碼包含的信息是一個(gè)網(wǎng)址,這個(gè)時(shí)候我們掃描二維碼會(huì)直接跳轉(zhuǎn)網(wǎng)頁。代碼一樣我們只需要將picture參數(shù)設(shè)置為一張動(dòng)圖,另外輸出文件后綴改為gif即可:

二、使用qrcode生成二維碼

qrcode同樣是一個(gè)便捷的工具,使用該模塊我們也能夠很快的實(shí)現(xiàn)二維碼的生成。

(1)模塊安裝

這里同樣使用pip安裝,我們?cè)诿钚写翱趫?zhí)行下列語句:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ qrcode

安裝完成后我們就可以開始生成我們的第一個(gè)二維碼了:

import qrcode
img = qrcode.make('http://www.baidu.com')
img.save('qrcode.jpg')

在我們調(diào)用save方法后,項(xiàng)目下就會(huì)生成一張qrcode.png圖片,該圖片就是我們的二維碼圖片,我們掃出來同樣是直接跳轉(zhuǎn)網(wǎng)頁。

(2)更準(zhǔn)確的生成二維碼

除了上面的方式,我們還可以通過QRCode類來生成二維碼,這種方式我們可以控制二維碼的更多信息:

from qrcode import QRCode
qr = QRCode()    # 創(chuàng)建二維碼對(duì)象
qr.add_data('http://www.baidu.com')    # 設(shè)置二維碼數(shù)據(jù)
img = qr.make_image()    # 創(chuàng)建二維碼圖片
img.save('qrcode.png')    # 保存二維碼圖片

通過這種方式我們同樣可以生成一個(gè)二維碼,當(dāng)然我們還可以豐富一下:

import qrcode
qr = qrcode.QRCode(
    version=5,        # 二維碼的大小,取值1-40
    box_size=10,    # 二維碼最小正方形的像素?cái)?shù)量
    error_correction=qrcode.constants.ERROR_CORRECT_H,    # 二維碼的糾錯(cuò)等級(jí)
    border=5    # 白色邊框的大小
)
qr.add_data('http://www.baidu.com')    # 設(shè)置二維碼數(shù)據(jù)
img = qr.make_image()    # 創(chuàng)建二維碼圖片
img.save('qrcode.png')    # 保存二維碼

其中version包含了大小信息,當(dāng)設(shè)置為1時(shí),生成一個(gè)12x12大小的二維碼,單位為box_size個(gè)像素。

我們可以將version設(shè)置為None,并添加一句qr.make(fit=True),這樣程序會(huì)自動(dòng)生成大小合適的二維碼。

另外error_correction為糾錯(cuò)等級(jí)的設(shè)置,糾錯(cuò)等級(jí)是什么這就是關(guān)于二維碼本身的知識(shí)了。

  • ERROR_CORRECT_L:大約7%或更少的錯(cuò)誤能被糾正。
  • ERROR_CORRECT_M(默認(rèn)):大約15%或更少的錯(cuò)誤能被糾正。
  • ROR_CORRECT_H:大約30%或更少的錯(cuò)誤能被糾正。

上面是可以供我們選擇的幾個(gè)內(nèi)置常數(shù)。

(3)讀取二維碼中的數(shù)據(jù)

上面我們一直在講如何生成二維碼,但是我們?nèi)吮旧硎菬o法讀取二維碼中的信息,這就要借助我們的設(shè)備了。在Python中,我們可以通過pyzbar模塊來識(shí)別二維碼的識(shí)別,當(dāng)然還有其它方法,這里我們使用pyzbar看看應(yīng)該如何識(shí)別二維碼,首先我們需要安裝模塊:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ pyzbar

另外我們需要安裝opencv模塊:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ opencv-python

之后就可以開始識(shí)別二維碼了:

import cv2
from pyzbar import pyzbar
im = cv2.imread('qrcode.png')    # 讀取二維碼
data = pyzbar.decode(im)    # 解析二維碼
print(data)

我們使用如下圖片作為測(cè)試:

其中包含的信息為http://www.baidu.com,我們看一下輸出結(jié)果:

[Decoded(data=b'http://www.baidu.com', type='QRCODE', rect=Rect(left=5, top=5, width=29, height=29), polygon=[Point(x=5, y=5), Point(x=5, y=34), Point(x=34, y=34), Point(x=34, y=5)])]

顯然是我們看不懂的東西,但是我們?cè)诶锩婵吹搅薶ttp://www.baidu.com的字樣,我們可以通過如下方式解析出內(nèi)容:

import cv2
from pyzbar import pyzbar
im = cv2.imread('qrcode.png')    # 讀取二維碼
data = pyzbar.decode(im)    # 解析二維碼
text = data[0].data.decode('utf-8')    # 解析數(shù)據(jù)
print(text)

輸出結(jié)果如下:

http://www.baidu.com

這樣我們就算是將內(nèi)容解析出來了。

到此這篇關(guān)于詳解Python如何生成優(yōu)雅的二維碼的文章就介紹到這了,更多相關(guān)Python生成二維碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

海盐县| 怀化市| 蒙城县| 华池县| 石家庄市| 赤城县| 文安县| 昌吉市| 景东| 延吉市| 惠东县| 调兵山市| 鄂州市| 汕尾市| 广水市| 华宁县| 莱西市| 沙洋县| 余江县| 张北县| 墨竹工卡县| 柳江县| 惠安县| 酉阳| 洞口县| 错那县| 许昌县| 建瓯市| 罗平县| 安岳县| 延庆县| 长武县| 锡林郭勒盟| 宁晋县| 平度市| 远安县| 保靖县| 凤阳县| 长宁区| 景东| 都昌县|