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

如何用Python生成二維碼、解析二維碼

 更新時間:2021年03月11日 14:33:48   作者:古明地盆  
這篇文章主要介紹了如何用Python生成二維碼、解析二維碼,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下

楔子

二維碼在我們的生活中可以說是必不可少的,不單單是手機(jī)支付、其它很多地方也都需要掃描二維碼。那么下面我們就來看看如何使用python來生成二維碼、以及識別二維碼。

關(guān)于二維碼,我們來說一下它的結(jié)構(gòu)。當(dāng)然關(guān)于二維碼的結(jié)構(gòu)其實不是太重要,這里只是提一下,沒興趣可以不用看。

從圖中我們可以看出二維碼結(jié)構(gòu)整體劃分為功能圖形和編碼區(qū)兩大部分,功能圖形又細(xì)分為:空白區(qū)、位置探測圖形、位置探測圖形分隔符、定位圖形、校正圖形,而編碼區(qū)細(xì)分為:格式信息、版本信息、數(shù)據(jù)和糾錯碼字,來簡單了解一下每一部分的功能:

  • 空白區(qū):留白,不需要做任何處理
  • 位置探測圖形:協(xié)助掃描軟件定位二維碼碼
  • 位置探測圖形分隔符:區(qū)分功能圖形和編碼區(qū)
  • 定位圖形:指示標(biāo)識密度和確定坐標(biāo)系
  • 校正圖形:校正圖形的數(shù)量和位置
  • 格式信息:存放格式化數(shù)據(jù)的信息
  • 版本信息:二維碼的規(guī)格,二維碼符號共有 40 種規(guī)格的矩陣
  • 數(shù)據(jù)和糾錯碼字:實際保存的二維碼信息和糾錯碼字(用于修正二維碼損壞帶來的錯誤)

生成二維碼

生成二維碼的話,python有兩個第三方模塊:qrcode和MyQR可以幫我我們生成二維碼,下面來看一下這兩個模塊的用法。

qrcode

生成比較簡單的二維碼就是,當(dāng)我們掃描的時候,會自動跳轉(zhuǎn)到某個頁面。

import qrcode
 
# 調(diào)用QRCode,可以接收以下參數(shù)
"""
version: 二維碼的格子大小,可以是1到40。值越大,格子越大,一般不超過10,選擇3比較合適
error_correction: 二維碼錯誤容許率,默認(rèn)為qrcode.constants.ERROR_CORRECT_M,容許小于 15% 的錯誤率
         此外還有qrcode.constants.ERROR_CORRECT_L: 容許小于 7% 的錯誤率
         qrcode.constants.ROR_CORRECT_H: 容許小于 30% 的錯誤率
box_size: 二維碼每個小格子包含的像素數(shù)量
border: 二維碼到圖片邊框的小格子數(shù),默認(rèn)值為 4         
"""
qr = qrcode.QRCode() # 事實上里面的參數(shù)我們可以都不指定,默認(rèn)會選擇一個比較合適的參數(shù)
 
# 調(diào)用add_data,指定url。
qr.add_data("https://www.baidu.com/")
# 生成二維碼圖像,顏色為藍(lán)色,背景色為粉色
img = qr.make_image(fill_color='blue', back_color='pink')
# 顯示圖像,這個會打開一個臨時文件
img.show()
# 此外,我們還可以保存到硬盤上
img.save("1.png")
 
# 事實上,這個img實際上是通過PIL模塊得到的,可以理解為里面Image對象
# 如果你熟悉PIL模塊的話,那么你應(yīng)該知道可以將里面Image對象保存成圖片對應(yīng)的字節(jié)流
from io import BytesIO
buf = BytesIO()
img.save(buf) # 將字節(jié)保存到buf里面
with open("2.png", "wb") as f:
  f.write(buf.getvalue()) # 和直接保存為1.png是一樣的

此時我們就生成了一個二維碼,當(dāng)掃描該二維碼的時候就會跳轉(zhuǎn)到百度。

另外我們在add_data中指定的是一個url,我們也可以不指定url,而是指定一段文字。這樣的話,當(dāng)掃描的時候就會顯示我們輸入的文字。

MyQR

MyQR也可以用來生成二維碼,但是它和qrcode相比最大的特點就是它可以嵌入圖片當(dāng)背景。

from MyQR import myqr
 
# 主要用到以下幾個參數(shù)
# words:文本,可以是一個鏈接,或者你想說的話(不支持中文,很不友好)
# picture:你用到的圖片,作為背景,不然只是一個光禿禿的二維碼
# colorsize:True,表示生成彩圖
# save_name:表示生成的二維碼的名字
myqr.run(words="http://www.bilibili.com",
     picture="satori.jpg",
     colorized=True,
     save_name="bilibili.png")

當(dāng)掃這個二維碼的時候,就會跳轉(zhuǎn)到bilibili。指的一提的是,這里圖片,還可以使用gif格式的動圖,當(dāng)然生成的圖片也要是gif格式的。

解析二維碼

我們除了可以使用python生成二維碼,還可以解析二維碼,解析二維碼也有兩個模塊,一個是zxing、一個是pyzbar。

首先是zxing,不過這個模塊有點讓人尷尬,因為這個模塊調(diào)用的是java的接口。也就是說解析二維碼的底層工作是java做的,python是負(fù)責(zé)調(diào)用,所以使用這個模塊的時候需要你本地有java環(huán)境。所以我使用我阿里云上的centos進(jìn)行測試。

>>> import zxing
>>> reader = zxing.BarCodeReader()
>>> barcode = reader.decode('bilibili.png')
>>> barcode.parsed
'http://www.bilibili.com' # 是可以解析出來的
>>>

然后看看pyzbar模塊,這個模塊就不需要java了,直接使用python即可。

import numpy as np
from PIL import Image
from pyzbar import pyzbar
 
# 讀取文件,轉(zhuǎn)成數(shù)組
im = np.array(Image.open("bilibili.png"))
print(pyzbar.decode(im))
# 返回的信息還是很多的
"""
[
   Decoded(data=b'http://www.bilibili.com',
       type='QRCODE',
       rect=Rect(left=35, top=35, width=263, height=264),
       polygon=[Point(x=35, y=35), Point(x=35, y=297), Point(x=297, y=299), Point(x=298, y=35)])
]
"""
 
# 拿到內(nèi)容
print(pyzbar.decode(im)[0].data.decode("utf-8")) # http://www.bilibili.com

兩個模塊都是可以正常解析的,以上就是python關(guān)于二維碼的一些操作。

以上就是如何用Python生成二維碼、解析二維碼的詳細(xì)內(nèi)容,更多關(guān)于Python生成二維碼、解析二維碼的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python hashlib和hmac模塊使用方法解析

    Python hashlib和hmac模塊使用方法解析

    這篇文章主要介紹了Python hashlib和hmac模塊使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-12-12
  • Python requests接口測試實現(xiàn)代碼

    Python requests接口測試實現(xiàn)代碼

    這篇文章主要介紹了Python requests接口測試實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • Pytorch用Tensorboard來觀察數(shù)據(jù)

    Pytorch用Tensorboard來觀察數(shù)據(jù)

    這篇文章主要介紹了Pytorch用Tensorboard來觀察數(shù)據(jù),上一篇文章我們講解了關(guān)于Pytorch?Dataset的數(shù)據(jù)處理,這篇我們就來講解觀察數(shù)據(jù),下面具體相關(guān)資料,需要的朋友可以參考一下,希望對你有所幫助
    2021-12-12
  • python實現(xiàn)創(chuàng)建新列表和新字典,并使元素及鍵值對全部變成小寫

    python實現(xiàn)創(chuàng)建新列表和新字典,并使元素及鍵值對全部變成小寫

    今天小編就為大家分享一篇python實現(xiàn)創(chuàng)建新列表和新字典,并使元素及鍵值對全部變成小寫,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • pygame實現(xiàn)俄羅斯方塊游戲(基礎(chǔ)篇1)

    pygame實現(xiàn)俄羅斯方塊游戲(基礎(chǔ)篇1)

    這篇文章主要為大家介紹了pygame實現(xiàn)俄羅斯方塊游戲基礎(chǔ)的第1篇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • 使用11行Python代碼盜取了室友的U盤內(nèi)容

    使用11行Python代碼盜取了室友的U盤內(nèi)容

    這篇文章主要介紹了使用11行Python代碼盜取了室友的U盤內(nèi)容的相關(guān)資料,需要的朋友可以參考下
    2018-10-10
  • 詳解Python遍歷列表時刪除元素的正確做法

    詳解Python遍歷列表時刪除元素的正確做法

    這篇文章主要介紹了詳解Python遍歷列表時刪除元素的正確做法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python機(jī)器學(xué)習(xí)之決策樹算法

    Python機(jī)器學(xué)習(xí)之決策樹算法

    這篇文章主要為大家詳細(xì)介紹了Python機(jī)器學(xué)習(xí)之決策樹算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Django展示可視化圖表的多種方式

    Django展示可視化圖表的多種方式

    這篇文章主要介紹了Django展示可視化圖表的多種方式,幫助大家更好的理解和學(xué)習(xí)使用django框架,感興趣的朋友可以了解下
    2021-04-04
  • python通過索引遍歷列表的方法

    python通過索引遍歷列表的方法

    這篇文章主要介紹了python通過索引遍歷列表的方法,實例分析了Python遍歷列表的相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下
    2015-05-05

最新評論

万年县| 阜城县| 陇南市| 庆云县| 纳雍县| 大余县| 达日县| 区。| 台北县| 平邑县| 城口县| 万源市| 绥芬河市| 淮阳县| 克山县| 永兴县| 嘉善县| 荣成市| 昔阳县| 北海市| 东丽区| 神池县| 安徽省| 吉林市| 泰州市| 建湖县| 鹤岗市| 沈阳市| 安新县| 军事| 沙河市| 衢州市| 锡林郭勒盟| 晴隆县| 西平县| 永泰县| 禹城市| 延庆县| 南溪县| 晋中市| 确山县|