Python一行代碼實(shí)現(xiàn)生成和讀取二維碼
二維碼是用某種特定的幾何圖形按一定規(guī)律在平面(二維方向上)分布的、黑白相間的、記錄數(shù)據(jù)符號(hào)信息的圖形。
二維碼被稱為快速響應(yīng)碼,可能看起來(lái)很簡(jiǎn)單,但它們能夠存儲(chǔ)大量數(shù)據(jù)。無(wú)論掃描二維碼時(shí)包含多少數(shù)據(jù),用戶都可以立即訪問(wèn)信息。
近些年二維碼也是迅速普及,目前已經(jīng)成為了我們生活中的一部分,它有許多應(yīng)用場(chǎng)景:
- 信息獲?。?、地圖、WIFI密碼、資料)
- 網(wǎng)站跳轉(zhuǎn)(跳轉(zhuǎn)到微博、手機(jī)網(wǎng)站、網(wǎng)站)
- 廣告推送(用戶掃碼,直接瀏覽商家推送的視頻、音頻廣告)
- 手機(jī)電商(用戶掃碼、手機(jī)直接購(gòu)物下單)
- 防偽溯源(用戶掃碼、即可查看生產(chǎn)地;同時(shí)后臺(tái)可以獲取最終消費(fèi)地)
- 優(yōu)惠促銷(用戶掃碼,下載電子優(yōu)惠券,抽獎(jiǎng))
- 會(huì)員管理(用戶手機(jī)上獲取電子會(huì)員信息、VIP服務(wù))
- 手機(jī)支付(掃描商品二維碼,通過(guò)銀行或第三方支付提供的手機(jī)端通道完成支付)
- 賬號(hào)登錄(掃描二維碼進(jìn)行各個(gè)網(wǎng)站或軟件的登錄)
Python 處理二維碼也非常簡(jiǎn)單,今天我們就來(lái)看看怎樣使用一行代碼生成或者讀取二維碼。
生成二維碼
Python 有一個(gè)處理二維碼的模塊叫qrcode
,我們要生成二維碼,需要安裝這個(gè)庫(kù):
生成二維碼就是調(diào)用這個(gè)模塊的 make
函數(shù):
import?qrcode img?=?qrcode.make('https://www.zhihu.com/people/wu-huan-bu-san') img.save('./pic.jpg')
運(yùn)行這段代碼,就可以得到下面的二維碼:
大家可以掃碼試試看,說(shuō)不定有驚喜哦!
你肯定會(huì)說(shuō):騙子!這不是一行代碼??!
好吧,這兩行可以合并的嘛:
qrcode.make('https://www.zhihu.com/people/wu-huan-bu-san').save('./pic.jpg')
讀取二維碼
讀取二維碼就是將二維碼背后隱藏的信息解析出來(lái),這時(shí)候就不是用 qrcode
這個(gè)模塊了,而是用 OpenCV 這個(gè)模塊。相信公眾號(hào)的讀者肯定對(duì)這個(gè)庫(kù)比較熟悉,經(jīng)常出現(xiàn)在我們的文章中。
先安裝這個(gè)庫(kù):
pip install opencv-python
接著,我們以上面生成的二維碼為例,來(lái)看看讀取的代碼:
import?cv2 d?=?cv2.QRCodeDetector() val,?_,?_?=?d.detectAndDecode(cv2.imread("pic.jpg")) print("the?secret?is:?",?val)
運(yùn)行這段代碼,打印信息是:
the secret is: https://www.zhihu.com/people/wu-huan-bu-san
這正是我們生成二維碼的內(nèi)容。
這里怎么轉(zhuǎn)換成一行代碼就不需要我贅述了吧!
補(bǔ)充
當(dāng)然Python除了可以生成靜態(tài)的二維碼,還能生成動(dòng)態(tài)的
下面是實(shí)現(xiàn)動(dòng)態(tài)二維碼的示例代碼,可以參考一下
# -*- coding:utf-8 -*- # @Time : 2021-09-30 # @Author : carl_DJ from MyQR import myqr #定義二維碼內(nèi)容 word = "miss U " #追加背景 myqr.run( word, #圖片類型為位.gif picture='./sohucs.gif', colorized=True, version=6 )
當(dāng)然,Python還可以制作一個(gè)自定義二維碼生成工具,可以根據(jù)自己的需求生成黑白的或者彩色的二維碼。
from gooey import GooeyParser,Gooey from MyQR import myqr @Gooey(encoding='utf-8',program_name='二維碼生成器',program_description='生成動(dòng)態(tài)、彩色、黑白二維碼',language='chinese') def main(): parser = GooeyParser(description="生成動(dòng)態(tài)、彩色、黑白二維碼") parser.add_argument('文本', widget="TextField") parser.add_argument('文件', widget="FileChooser") # 文件選擇框 parser.add_argument('樣式選擇', widget='Dropdown',choices={"黑白":"1","彩色":2,"動(dòng)態(tài)":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.樣式選擇 == '動(dòng)態(tài)': if args.文件.split('.')[-1] == 'gif': myqr.run(words=args.文本, version=9, save_name='qrcode.gif', save_dir=args.文件保存路徑, picture=args.文件,colorized=True) else: print("圖片格式錯(cuò)誤,動(dòng)態(tài)二維碼圖片必須為gif格式的") if __name__ == '__main__': main()
總結(jié)
二維碼的操作代碼夠簡(jiǎn)單吧!相信看過(guò)這篇文章的你肯定能記住,下次遇到二維碼操作的時(shí)候只需5秒就可以出結(jié)果!當(dāng)然,還有其他一些操作,大家可以閱讀模塊的接口去嘗試。
到此這篇關(guān)于Python一行代碼實(shí)現(xiàn)生成和讀取二維碼的文章就介紹到這了,更多相關(guān)Python 二維碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于python基礎(chǔ)數(shù)據(jù)類型bytes進(jìn)制轉(zhuǎn)換
Python 3.x之后,Python自帶字符默認(rèn)使用utf-8格式編碼和顯示,bytes數(shù)據(jù)類型是utf-8格式的二進(jìn)制形式的不可變序列,需要的朋友可以參考下2023-05-05TensorFlow 多元函數(shù)的極值實(shí)例
今天小編就為大家分享一篇TensorFlow 多元函數(shù)的極值實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02200行python代碼實(shí)現(xiàn)貪吃蛇游戲
這篇文章主要為大家詳細(xì)介紹了200行python代碼實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04Python數(shù)據(jù)分析numpy數(shù)組的3種創(chuàng)建方式
這篇文章主要介紹了Python數(shù)據(jù)分析numpy數(shù)組的3種創(chuàng)建方式,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-07-07Python爬蟲之Selenium實(shí)現(xiàn)窗口截圖
這篇文章主要介紹了Python爬蟲之Selenium實(shí)現(xiàn)窗口截圖,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12python 時(shí)間戳與格式化時(shí)間的轉(zhuǎn)化實(shí)現(xiàn)代碼
這篇文章主要介紹了python 時(shí)間戳和格式化時(shí)間的轉(zhuǎn)化,需要的朋友可以參考下2016-03-03python打開網(wǎng)頁(yè)和暫停實(shí)例
這篇文章主要介紹了python打開網(wǎng)頁(yè)和暫停實(shí)例,涉及webbrowser模塊與os模塊的使用,是非常具有實(shí)用價(jià)值的一個(gè)技巧,需要的朋友可以參考下2014-09-09