謝作如 謝集
掃描儀是辦公室中最常見的設(shè)備之一。雖然智能手機上配置的攝像頭像素越來越高,人們習(xí)慣于用“隨手一拍”來替代過去的“掃描”動作,但畢竟拍攝的效果不好,得到的圖片往往不夠平整。筆者學(xué)校創(chuàng)客空間中有一臺愛普生掃描儀,雖然平時用處不大,但關(guān)鍵時刻總需要它的幫忙。為了方便使用,我們希望將其設(shè)置為網(wǎng)絡(luò)共享,隨時隨處可以使用,最大限度地提升其利用率。
2020年3月,我們曾經(jīng)利用虛谷號和Python將家里的惠普一體機(型號為“M126a”)改造為網(wǎng)絡(luò)版的一體機,使其支持遠程打印、遠程掃描等功能。但是很遺憾,我們暫時找不到這臺愛普生掃描儀在arm64系統(tǒng)下的驅(qū)動程序,只能將其安裝在X86架構(gòu)下的拿鐵熊貓上,經(jīng)過一番折騰,總算實現(xiàn)了多人共享,普通掃描儀變身為網(wǎng)絡(luò)掃描儀(如圖1)。
● 思路分析
因為之前已經(jīng)成功地在一體機上實現(xiàn)網(wǎng)絡(luò)掃描的功能,我們再次選擇這樣的做法,即利用Python寫一個Web服務(wù)器,通過訪問網(wǎng)頁來操作掃描儀,具體方法如下:
用Python的Flask框架寫一個Web服務(wù)器,運行在連接掃描儀的迷你電腦上。用戶通過網(wǎng)頁發(fā)送掃描命令,Python將調(diào)用系統(tǒng)的命令驅(qū)動掃描儀,得到圖片后再借助格式轉(zhuǎn)換工具轉(zhuǎn)化為JPEG格式,最后通過網(wǎng)頁顯示圖片,提示用戶下載。這一過程描述起來有點復(fù)雜,但執(zhí)行速度其實很快,而且對用戶來說過程“透明”:點擊網(wǎng)頁的“掃描”按鈕,一會兒就能得到圖片,是很好的體驗?;赪eb的掃描儀應(yīng)用系統(tǒng)的運行流程如圖2所示。
這一做法的優(yōu)勢很明顯,只要能上網(wǎng)的終端都可以使用,操作非常簡單,部署起來也方便。創(chuàng)客空間中有各種迷你電腦或者閑置的電腦,只要裝上Linux系統(tǒng),配置好掃描儀的驅(qū)動即可。至于為什么要選擇Linux,是因為Linux下有支持命令行的掃描儀軟件scanimage和格式轉(zhuǎn)換軟件imagemagick。在Windows下,類似功能的軟件很難找到。
● 程序?qū)崿F(xiàn)
Flask是Python的輕量級Web開發(fā)框架,也是浙教版必修二《信息系統(tǒng)與社會》模塊的教學(xué)內(nèi)容之一。
1.功能測試
先在Jupyter上編寫代碼,模擬一下核心功能,即掃描。
啟動掃描命令(如圖3)。
圖片轉(zhuǎn)換命令(如圖4)。
很順利,一張圖片就出來了,Python就這么神奇。
2.代碼編寫
借助教材中的案例,我們開發(fā)了一個很簡單的Web應(yīng)用。核心代碼僅僅一個文件——webscan.py。如圖5所示,“templates”中是作為模板的兩個靜態(tài)網(wǎng)頁?!皊tatic”中放兩個js文件,借助jquery實現(xiàn)了文件列表的排序功能?!皊tatic”文件中的scan文件夾,則用來存放掃描文件(如圖6)。
“webscan.py”代碼中加了如下幾條路由,具體介紹如下頁表所示。
限于篇幅,下頁圖7的代碼僅僅提供了掃描功能的部分,如果需要完整代碼和相關(guān)的網(wǎng)頁模板(“index.html”和“l(fā)ist.html”文件),請訪問虛谷號的GitHub,或者向編輯索取。
● 系統(tǒng)應(yīng)用
這個基于Web的掃描儀應(yīng)用系統(tǒng),最后命名為“WebScan”。代碼用vscode編寫,在Anaconda、mPython等環(huán)境中測試通過,支持Python3.5及以上版本。在虛谷號、MacOS和Ubuntu等系統(tǒng)上都能成功部署(如下頁圖8)。
客戶端使用Chrome、Safari、Edge和Firefox等瀏覽器,都能夠正常訪問。同樣,在手機上訪問、操作也很正常。
1.掃描文件(如下頁圖9)
2.瀏覽文件(如下頁圖10)
我們把Web服務(wù)器的地址做成二維碼貼在掃描儀上面,手機一掃就打開頁面,然后開始操作,非常方便。
● 拓展思考
在京東和淘寶上,我們都沒有找到價格在1000元內(nèi)的具備網(wǎng)絡(luò)共享功能的平板掃描儀。具備網(wǎng)絡(luò)功能的,要么是高拍儀,要么是動輒上萬的高速掃描儀。將辦公室中的普通掃描儀配上迷你電腦,然后放在學(xué)校的公用辦公區(qū)域,方便師生們使用,應(yīng)該是一個不錯的創(chuàng)意應(yīng)用。
想象一下,教師們帶著文稿走到掃描儀前面,放好,然后拿出手機掃一下二維碼。點擊網(wǎng)頁上的按鈕,十幾秒鐘后,掃描的圖片就到了手機里了。這不是很方便嗎?學(xué)生沒有手機怎么用呢?比如插上U盤,按下按鈕開始掃描,掃描圖片直接存入U盤帶走。要實現(xiàn)這樣的功能,編程起來也很簡單。有了Python,解決這些問題一點都不困難。