前言二維碼被稱為快速響應碼,可能看起來很簡單,但它們能夠存儲大量數據。無論掃描二維碼時包含多少數據,用戶都可以立即訪問信息。本文將用一行Python代碼實現二維碼的讀取與生成,需要的可以參考一下!二維碼是用某種特定的幾何圖形按一定規律在平面(二維方向上)分佈的、黑白相間的、記錄數據符號信息的圖形。二維碼被稱為快速響應碼,可能看起來很簡單,但它們能夠存儲大量數據。無論掃描二維碼時包含多少數據,用戶都可以立即訪問信息。近些年二維碼也是迅速普及,目前已經成為瞭我們生活中的一部分,它有許多應用場景:信息獲取(名片、地圖、WIFI密碼、資料)網站跳轉(跳轉到微博、手機網站、網站)廣告推送(用戶掃碼,直接瀏覽商傢推送的視頻、音頻廣告)手機電商(用戶掃碼、手機直接購物下單)防偽溯源(用戶掃碼、即可查看生產地;同時後臺可以獲取最終消費地)優惠促銷(用戶掃碼,下載電子優惠券,抽獎)會員管理(用戶手機上獲取電子會員信息、VIP服務)手機支付(掃描商品二維碼,通過銀行或第三方支付提供的手機端通道完成支付)賬號登錄(掃描二維碼進行各個網站或軟件的登錄)Python 處理二維碼也非常簡單,今天我們就來看看怎樣使用一行代碼生成或者讀取二維碼。生成二維碼Python 有一個處理二維碼的模塊叫qrcode,我們要生成二維碼,需要安裝這個庫:生成二維碼就是調用這個模塊的 make 函數:import qrcode
img = qrcode.make('https://www.zhihu.com/people/wu-huan-bu-san')
img.save('./pic.jpg')運行這段代碼,就可以得到下面的二維碼:你肯定會說:騙子!這不是一行代碼啊!好吧,這兩行可以合並的嘛:qrcode.make('https://www.zhihu.com/people/wu-huan-bu-san').save('./pic.jpg')讀取二維碼讀取二維碼就是將二維碼背後隱藏的信息解析出來,這時候就不是用 qrcode 這個模塊瞭,而是用 OpenCV 這個模塊。相信公眾號的讀者肯定對這個庫比較熟悉,經常出現在我們的文章中。先安裝這個庫:pip install opencv-python接著,我們以上面生成的二維碼為例,來看看讀取的代碼:import cv2
d = cv2.QRCodeDetector()
val, _, _ = d.detectAndDecode(cv2.imread("pic.jpg"))
print("the secret is: ", val)運行這段代碼,打印的信息是:the secret is: https://www.zhihu.com/people/wu-huan-bu-san這正是我們生成二維碼的內容。這裡怎麼轉換成一行代碼就不需要我贅述瞭吧!補充當然Python除瞭可以生成靜態的二維碼,還能生成動態的下面是實現動態二維碼的示例代碼,可以參考一下# -*- coding:utf-8 -*-
# @Time : 2021-09-30
# @Author : carl_DJ
from MyQR import myqr
#定義二維碼內容
word = "miss U "
#追加背景
myqr.run(
word,
#圖片類型為位.gif
picture='./sohucs.gif',
colorized=True,
version=6
)當然,Python還可以制作一個自定義二維碼生成工具,可以根據自己的需求生成黑白的或者彩色的二維碼。from gooey import GooeyParser,Gooey
from MyQR import myqr
@Gooey(encoding='utf-8',program_name='二維碼生成器',program_description='生成動態、彩色、黑白二維碼',language='chinese')
def main():
parser = GooeyParser(description="生成動態、彩色、黑白二維碼")
parser.add_argument('文本', widget="TextField")
parser.add_argument('文件', widget="FileChooser") # 文件選擇框
parser.add_argument('樣式選擇', widget='Dropdown',choices={"黑白":"1","彩色":2,"動態":3})
parser.add_argument('文件保存路徑',widget='DirChooser')
args = parser.parse_args()
if args.樣式選擇 == '黑白':
# 生成二維碼
myqr.run(words=args.文本,version=9,save_name='qr.png',save_dir=args.文件保存路徑)
print('成功')
elif args.樣式選擇 == '彩色':
if args.文件.split('.')[-1] == 'gif' or args.文件.split('.')[-1] == 'png' or args.文件.split('.')[-1] == 'jpeg':
myqr.run(words=args.文本, version=9, save_name='qr.png', save_dir=args.文件保存路徑, picture=f'{args.文件}',colorized=True)
print('成功')
elif args.樣式選擇 == '動態':
if args.文件.split('.')[-1] == 'gif':
myqr.run(words=args.文本, version=9, save_name='qrcode.gif', save_dir=args.文件保存路徑, picture=args.文件,colorized=True)
else:
print("圖片格式錯誤,動態二維碼圖片必須為gif格式的")
if __name__ == '__main__':
main()總結二維碼的操作代碼夠簡單吧!相信看過這篇文章的你肯定能記住,下次遇到二維碼操作的時候隻需5秒就可以出結果!當然,還有其他一些操作,大傢可以閱讀模塊的接口去嘗試原文:https://www.jb51.net/article/238360.htm