中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用Python怎么生成一個二維碼并解析

發布時間:2021-03-11 16:18:01 來源:億速云 閱讀:190 作者:Leah 欄目:開發技術

這篇文章給大家介紹使用Python怎么生成一個二維碼并解析,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

生成二維碼

生成二維碼的話,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 BytesIO
buf = 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 np
from PIL import Image
from 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怎么生成一個二維碼并解析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

土默特右旗| 颍上县| 辽阳县| 齐齐哈尔市| 固原市| 土默特左旗| 图木舒克市| 开原市| 夏津县| 锡林郭勒盟| 平远县| 衡水市| 利川市| 太谷县| 紫金县| 桃园市| 永嘉县| 蒲江县| 观塘区| 诏安县| 冷水江市| 满城县| 河源市| 都匀市| 德格县| 呼玛县| 平和县| 吉安县| 淮北市| 南和县| 宜君县| 白玉县| 项城市| 宜都市| 阿拉善右旗| 林西县| 九寨沟县| 上饶县| 同心县| 莱州市| 阿瓦提县|