技术与应用
*********************
82
中国信息技术教育
用Python让多人“共享”扫描仪
谢作如 谢集 浙江省温州中学
扫描仪是办公室中最常见的设备之一。虽然智能手机上配置的摄像头像素越来越高,人们习惯于用“随手一拍”来替代过去的“扫描”动作,但毕竟拍摄的效果不好,得到的图片往往不够平整。笔者学校创客空间中有一台爱普生扫描仪,虽然平时用处不大,但关键时刻总需要它的帮忙。为了方便使用,我们希望将其设置为网络共享,随时随处可以使用,最大限度地提升其利用率。
2020年3月,我们曾经利用虚谷号和Python将家里的惠普一体机(型号为“M126a”)改造为网络版的一体机,使其支持远程打印、远程扫描等功能。但是很遗憾,我们暂时不到这台爱普生扫描仪在arm64系统下的驱动程序,只能将
其安装在X86架构下的拿铁熊猫上,经过一番折腾,总算实现了多人共享,普通扫描仪变身为网络扫描仪(如图1)。
● 思路分析
因为之前已经成功地在一体机上实现网络扫描的功能,我们再次选择这样的做法,即利用Python写一个Web服务器,通过访问网页来操作扫描仪,具体方法如下:
用Python的Flask框架写一个Web服务器,运行在连接扫描仪的迷你电脑上。用户通过网页发送扫描命令,Python将调用系统的命令驱动扫描仪,得到图片后再借助格式转换工具转化为JPEG格式,最后通过网页显示图片,提示用户下载。这一过程描述起来有
点复杂,但执行速度其实很快,而且对用户来说过程“透明”:点击网页的“扫描”按钮,一会儿就能得到图片,是很好的体验。基于Web的扫描仪应用系统的运行流程如图2所示。
这一做法的优势很明显,只要能上网的终端都可以使用,操作非常简单,部署起来也方便。创客空间中有各种迷你电脑或者闲置的电脑,只要装上Linux系统,配置好扫描仪的驱动即可。至于为什么要选择Linux,是因为Linux 下有支持命令行的扫描仪软件scanimage 和格式转换软件imagemagick。在Windows 下,类似功能的软件很难到。
● 程序实现
Fl ask是P y t hon的轻
量级
图1 放在客厅一角的虚谷号和一体机图2 基于Web的扫描仪应用系统
生活·技术·探索
技术与应用
*********************
Web开发框架,也是浙教版必修二
《信息系统与社会》模块的教学内
容之一。
1.功能测试
先在Jupyter上编写代码,模拟
一下核心功能,即扫描。
启动扫描命令(如图3)。
图片转换命令(如图4)。
很顺利,一张图片就出来了,
Python就这么神奇。
2.代码编写
借助教材中的案例,我们开发
了一个很简单的Web应用。核心代
码仅仅一个文件——webscan.py。
如图5所示,“templates”中是作为
模板的两个静态网页。“static”中
放两个js文件,借助jquery实现了文
件列表的排序功能。“static”文件
中的scan文件夹,则用来存放扫描
文件(如图6)。
“webscan.py”代码中加了
如下几条路由,具体介绍如下页表
所示。
限于篇幅,下页图7的代码仅
仅提供了扫描功能的部分,如果
需要完整代码和相关的网页模板
(“index.html”和“list.html”文件),请访问虚谷号的GitHub,或者向编辑索取。
● 系统应用
这个基于Web的扫描仪应用系统,最后命名为“WebScan”。代码用vscode编写,在Anaconda、mPython等环境中测试通过,支持Python3.5及以上版本。在虚谷号、MacOS和Ubuntu等系统上都能成
功部署(如下页图8)。
客户端使用Chrome、Safari、
Edge和Firefox等浏览器,都能够
正常访问。同样,在手机上访问、操
作也很正常。
1.扫描文件(如下页图9)
2.浏览文件(如下页图10)
我们把Web服务器的地址做
python能在手机上运行吗成二维码贴在扫描仪上面,手机一
扫就打开页面,然后开始操作,非
常方便。
● 拓展思考
在京东和淘宝上,我们都没有
到价格在1000元内的具备网络
共享功能的平板扫描仪。具备网络
功能的,要么是高拍仪,要么是动
辄上万的高速扫描仪。将办公室中
的普通扫描仪配上迷你电脑,然后
放在学校的公用办公区域,方便师
生们使用,应该是一个不错的创意
应用。
想象一下,教师们带着文稿走
到扫描仪前面,放好,然后拿出手
机扫一下二维码。点击网页上的按
钮,十几秒钟后,
扫描的图片就到了
图3
图4
图5
图6 应用程序的文件结构
83
JAN. 2021 NO.01
技术与应用
*********************
84
中国信息技术教育
图7
图8
图9
图10
“webscan.py”
中路由设计
手机里了。这不是很方便吗?学生没
有手机怎么用呢?比如插上U盘,按下按钮开始扫描,扫描图片直接存入U盘带走。要实现这样的功能,编程起来也很简单。有了Python,解决这些问题一点都不困难。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论