色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:60日期:2022-06-25 11:56:28
楔子

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

關于二維碼,我們來說一下它的結構。當然關于二維碼的結構其實不是太重要,這里只是提一下,沒興趣可以不用看。

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

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

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

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

qrcode

生成比較簡單的二維碼就是,當我們掃描的時候,會自動跳轉到某個頁面。

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

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

此時我們就生成了一個二維碼,當掃描該二維碼的時候就會跳轉到百度。

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

MyQR

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

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

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

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

解析二維碼

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

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

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

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

import numpy as npfrom PIL import Imagefrom pyzbar import pyzbar # 讀取文件,轉成數組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)])]''' # 拿到內容print(pyzbar.decode(im)[0].data.decode('utf-8')) # http://www.bilibili.com

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

以上就是如何用Python生成二維碼、解析二維碼的詳細內容,更多關于Python生成二維碼、解析二維碼的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 日韩99精品 | 中国一级毛片免费观看 | 国产成人三级经典中文 | 日本成人在线免费观看 | 一区二区三区免费在线观看 | 在线观看免费黄色网址 | 中文字幕一区二区三区视频在线 | 国产系列在线播放 | 欧美视频一区二区三区四区 | 亚洲va精品中文字幕动漫 | 精品国产一区二区三区国产馆 | 亚州一二区 | 亚洲精品日本高清中文字幕 | 国产精品不卡 | 成 人 亚洲 综合天堂 | 久青草国产97香蕉在线视频xx | 亚洲黄色免费网址 | a级国产乱理伦片在线观看 a级国产乱理伦片在线观看99 | 一区二区三区伦理 | 久久久久99精品成人片三人毛片 | 思思久热re6这里有精品 | 精品免费在线视频 | 成人欧美在线 | 亚洲综合精品一二三区在线 | 精品欧美一区二区在线观看 | 欧美精品黄页免费高清在线 | 久久综合九色综合欧洲色 | 99视频在线播放 | 国产黄色自拍视频 | 亚洲偷偷 | 欧美视频一区二区在线观看 | 操操操网 | 亚洲经典在线中文字幕 | 欧美激情精品久久久久久久九九九 | 大学生一级一片第一次免费 | 免费看亚洲 | 久久国产经典视频 | 成人国产片免费 | 日韩久久网 | 美女黄色三级 | 99久久精品国产综合一区 |