基于Python實(shí)現(xiàn)在線(xiàn)二維碼生成工具
在今天的教程中,費(fèi)老師我將為大家展示如何通過(guò)純Python
編程的方式,開(kāi)發(fā)出一個(gè)網(wǎng)頁(yè)應(yīng)用,從而幫助用戶(hù)直接通過(guò)瀏覽器訪(fǎng)問(wèn),即可基于輸入的網(wǎng)址等文字內(nèi)容,完成常規(guī)二維碼、靜態(tài)底圖二維碼以及動(dòng)圖底圖二維碼的快捷生成,先來(lái)看一看應(yīng)用的主要功能操作演示:
只寫(xiě)Python
開(kāi)發(fā)這樣精致的工具應(yīng)用非常簡(jiǎn)單,下面我來(lái)帶大家從搭建環(huán)境開(kāi)始,學(xué)習(xí)整個(gè)過(guò)程:
1.環(huán)境搭建
首先我們來(lái)創(chuàng)建應(yīng)用的虛擬開(kāi)發(fā)環(huán)境,建議使用Conda
,命令如下:
創(chuàng)建虛擬環(huán)境并激活
conda?create?-n?dash-qr-generator?python=3.8?-c?https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/?-y conda?activate?dash-qr-generator
安裝相關(guān)依賴(lài)
為了可以純Python
快速開(kāi)發(fā)我們的應(yīng)用,我們需要安裝dash
及我的開(kāi)源組件庫(kù)feffery-antd-components
,另外還需要安裝用于二維碼生成的第三方庫(kù)amazing-qr
,全部安裝命令如下:
pip?install?dash?feffery-antd-components?amzqr
全部執(zhí)行完成后我們的應(yīng)用開(kāi)發(fā)運(yùn)行環(huán)境就準(zhǔn)備好了~,接下來(lái)只需要在本文附件解壓后的根目錄執(zhí)行python app.py,接著訪(fǎng)問(wèn)本機(jī)的127.0.0.1:8050網(wǎng)址即可使用我們的應(yīng)用。
2.二維碼生成功能的封裝
因?yàn)槭褂玫?code>amazing-qr這個(gè)庫(kù)來(lái)進(jìn)行常規(guī)二維碼或自定義底圖二維碼的生成,為了方便在應(yīng)用中快速調(diào)用,我們可以對(duì)其進(jìn)行簡(jiǎn)單封裝,由于amazing-qr
在指定底圖素材時(shí)不能設(shè)置目錄,只能使用當(dāng)前工作目錄中的圖片,因此我們需要在生成圖片前切換工作目錄到素材所在的目錄,并在生成二維碼結(jié)束后還原先前的工作目錄:
utils.py
import?os from?amzqr?import?amzqr from?pathlib?import?Path def?generate_qr(mode:?str?=?'default', ????????????????words:?str?=?None, ????????????????version:?int?=?None, ????????????????level:?str?=?None, ????????????????picture_dir:?str?=?None, ????????????????picture:?str?=?None, ????????????????contrast:?float?=?None, ????????????????brightness:?float?=?None, ????????????????save_name:?str?=?None, ????????????????save_dir:?str?=?None): ????''' ????用于控制二維碼圖片的生成 ????:param?mode:?模式,可選的有default(常規(guī)二維碼static(靜態(tài)底圖)和motion(動(dòng)態(tài)底圖),默認(rèn)為default ????:param?words:?二維碼需要嵌入的信息 ????:param?version:?邊長(zhǎng)大小,取值在1到40之間,越大圖片越精細(xì) ????:param?level:?糾錯(cuò)水平,可選的有L、M、Q、H,從左往右越大越精準(zhǔn) ????:param?picture_dir:?底圖文件的絕對(duì)路徑 ????:param?picture:?底圖文件名 ????:param?contrast:?對(duì)比度,取值在0到1之間 ????:param?brightness:?亮度,取值在0到1之間 ????:param?save_name:?導(dǎo)出文件名 ????:param?save_dir:?導(dǎo)出文件絕對(duì)路徑 ????:return: ????''' ????#?mode:?default ????if?mode?==?'default': ????????_?=?amzqr.run( ????????????words=words, ????????????version=version, ????????????level=level, ????????????save_name=save_name, ????????????save_dir=save_dir ????????) ????#?mode:?static?|?motion ????elif?mode?==?'static'?or?mode?==?'motion': ????????origin?=?Path().absolute() ????????os.chdir(Path('caches',?picture_dir)) ????????_?=?amzqr.run( ????????????words=words, ????????????version=version, ????????????level=level, ????????????picture=picture, ????????????colorized=True, ????????????contrast=contrast, ????????????brightness=brightness, ????????????save_name=save_name, ????????????save_dir=os.getcwd() ????????) ????????os.chdir(origin)
3.網(wǎng)頁(yè)應(yīng)用的搭建
在前面二維碼生成函數(shù)編寫(xiě)完成的基礎(chǔ)上,下面進(jìn)入我們的重點(diǎn)——搭建網(wǎng)頁(yè)應(yīng)用,得益于dash
中構(gòu)建交互式網(wǎng)頁(yè)應(yīng)用的簡(jiǎn)單性和極高的自由度(遠(yuǎn)高于streamlit
等玩具庫(kù)),配合我的開(kāi)源組件庫(kù)框架fac
(https://github.com/CNFeffery/feffery-antd-components
)中近百種具有不同功能的組件,你可以利用它們快速構(gòu)建出具有各種常見(jiàn)功能的網(wǎng)頁(yè)應(yīng)用。
在我們的“在線(xiàn)二維碼圖片生成器”中,通過(guò)頂部AntdRadioGroup()
構(gòu)建的單選按鈕在三種模式中進(jìn)行切換,從而通過(guò)回調(diào)函數(shù)影響下面操作區(qū)所渲染出的各個(gè)表單輸入類(lèi)組件,如文字輸入框AntdInput()
、滑動(dòng)輸入框AntdSlider()
、下拉選擇AntdSelect()
等:
尤其是當(dāng)用戶(hù)切換到“靜態(tài)底圖”和“動(dòng)態(tài)底圖”模式時(shí),由于需要用戶(hù)上傳提供底圖素材,因此額外會(huì)渲染出圖片上傳組件AntdPictureUpload()
,它在“靜態(tài)底圖”模式下還具有圖片縮放、裁切編輯功能,只需要一個(gè)參數(shù)editable=True
即可實(shí)現(xiàn):
最后通過(guò)回調(diào)函數(shù)中不同模式下的參數(shù)組合,將后臺(tái)生成并導(dǎo)出的二維碼結(jié)果圖片推送至前端利用AntdImage()
一氣呵成進(jìn)行交互式展示,用戶(hù)即可直接右鍵另存為保存到本地:
本期的例子僅僅是展示了fac
能力的冰山一角,事實(shí)上只要你善于利用fac
中的不同功能組件,從在線(xiàn)小工具,到數(shù)據(jù)中臺(tái)平臺(tái),都可以?xún)H通過(guò)編寫(xiě)Python
程序輕松實(shí)現(xiàn)
到此這篇關(guān)于基于Python實(shí)現(xiàn)在線(xiàn)二維碼生成工具的文章就介紹到這了,更多相關(guān)Python二維碼生成內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在前女友婚禮上用python把婚禮現(xiàn)場(chǎng)的WIFI名稱(chēng)改成了
大家好,我是Lex 喜歡欺負(fù)超人那個(gè)Lex 擅長(zhǎng)領(lǐng)域:python開(kāi)發(fā),網(wǎng)絡(luò)安全滲透,Windows域控Exchange架構(gòu) 今日重點(diǎn):python暴力拿下WiFi密碼;python拿下路由器管理頁(yè)面 代碼干貨滿(mǎn)滿(mǎn),建議收藏+實(shí)操!有問(wèn)題及需要,請(qǐng)留言哦2021-08-08python2與python3中關(guān)于對(duì)NaN類(lèi)型數(shù)據(jù)的判斷和轉(zhuǎn)換方法
今天小編就為大家分享一篇python2與python3中關(guān)于對(duì)NaN類(lèi)型數(shù)據(jù)的判斷和轉(zhuǎn)換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10selenium.webdriver中add_argument方法常用參數(shù)表
這篇文章主要介紹了selenium.webdriver中add_argument方法常用參數(shù)表,需要的朋友可以參考下2021-04-04django項(xiàng)目登錄中使用圖片驗(yàn)證碼的實(shí)現(xiàn)方法
這篇文章主要介紹了django項(xiàng)目登錄中使用圖片驗(yàn)證碼的實(shí)現(xiàn)代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-08-08基于Python實(shí)現(xiàn)多圖繪制系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了如何基于Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的多圖繪制系統(tǒng),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02對(duì)python3 中方法各種參數(shù)和返回值詳解
今天小編就為大家分享一篇對(duì)python3 中方法各種參數(shù)和返回值詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12pygame庫(kù)實(shí)現(xiàn)移動(dòng)底座彈球小游戲
這篇文章主要為大家詳細(xì)介紹了pygame庫(kù)實(shí)現(xiàn)移動(dòng)底座彈球小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11