<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在今天的教學中,費老師我將為大家展示如何通過純Python
程式設計的方式,開發出一個網頁應用,從而幫助使用者直接通過瀏覽器存取,即可基於輸入的網址等文字內容,完成常規二維條碼、靜態底圖二維條碼以及動圖底圖二維條碼的快捷生成,先來看一看應用的主要功能操作演示:
只寫Python
開發這樣精緻的工具應用非常簡單,下面我來帶大家從搭建環境開始,學習整個過程:
首先我們來建立應用的虛擬開發環境,建議使用Conda
,命令如下:
建立虛擬環境並啟用
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
安裝相關依賴
為了可以純Python
快速開發我們的應用,我們需要安裝dash
及我的開源元件庫feffery-antd-components
,另外還需要安裝用於二維條碼生成的第三方庫amazing-qr
,全部安裝命令如下:
pip install dash feffery-antd-components amzqr
全部執行完成後我們的應用開發執行環境就準備好了~,接下來只需要在本文附件解壓後的根目錄執行python app.py,接著存取本機的127.0.0.1:8050網址即可使用我們的應用。
因為使用到amazing-qr
這個庫來進行常規二維條碼或自定義底圖二維條碼的生成,為了方便在應用中快速呼叫,我們可以對其進行簡單封裝,由於amazing-qr
在指定底圖素材時不能設定目錄,只能使用當前工作目錄中的圖片,因此我們需要在生成圖片前切換工作目錄到素材所在的目錄,並在生成二維條碼結束後還原先前的工作目錄:
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(常規二維條碼static(靜態底圖)和motion(動態底圖),預設為default :param words: 二維條碼需要嵌入的資訊 :param version: 邊長大小,取值在1到40之間,越大圖片越精細 :param level: 糾錯水平,可選的有L、M、Q、H,從左往右越大越精準 :param picture_dir: 底圖檔案的絕對路徑 :param picture: 底圖檔名 :param contrast: 對比度,取值在0到1之間 :param brightness: 亮度,取值在0到1之間 :param save_name: 匯出檔名 :param save_dir: 匯出檔案絕對路徑 :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)
在前面二維條碼生成函數編寫完成的基礎上,下面進入我們的重點——搭建網頁應用,得益於dash
中構建互動式網頁應用的簡單性和極高的自由度(遠高於streamlit
等玩具庫),配合我的開源元件庫框架fac
(https://github.com/CNFeffery/feffery-antd-components
)中近百種具有不同功能的元件,你可以利用它們快速構建出具有各種常見功能的網頁應用。
在我們的“線上二維條碼圖片生成器”中,通過頂部AntdRadioGroup()
構建的無線電鈕在三種模式中進行切換,從而通過回撥函數影響下面操作區所渲染出的各個表單輸入類元件,如文字輸入框AntdInput()
、滑動輸入框AntdSlider()
、下拉選擇AntdSelect()
等:
尤其是當用戶切換到“靜態底圖”和“動態底圖”模式時,由於需要使用者上傳提供底圖素材,因此額外會渲染出圖片上傳元件AntdPictureUpload()
,它在“靜態底圖”模式下還具有圖片縮放、裁切編輯功能,只需要一個引數editable=True
即可實現:
最後通過回撥函數中不同模式下的引數組合,將後臺生成並匯出的二維條碼結果圖片推播至前端利用AntdImage()
一氣呵成進行互動式展示,使用者即可直接右鍵另存為儲存到本地:
本期的例子僅僅是展示了fac
能力的冰山一角,事實上只要你善於利用fac
中的不同功能元件,從線上小工具,到資料中臺平臺,都可以僅通過編寫Python
程式輕鬆實現
到此這篇關於基於Python實現線上二維條碼生成工具的文章就介紹到這了,更多相關Python二維條碼生成內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45