有了这个灵感之后,接下来就是要思考它的具体形态,以及测试技术上的可行性。初步分析了一下 HasciiCam 的源代码,发现它是用了 Linux 下面一个很多年前就有人写好的 aalib 库,这个库实现了从图像到字符的转换,而且还有多种格式。HasciiCam 使用 C 语言写的,我对 Linux 下的 C 编程并不熟悉,但可以用 Python,于是就顺藤摸瓜找到了有个 python-aalib 的库,它封装了 aalib 这个 C 语言库,于是这说明了我可以用 Python 来实现到这个功能!
虽然用打印机打印能保证画面够大照片清晰,但是当你把一台打印机搬过去参展现场,就这么简单用普通的简单功能那就显得太没趣了。因此,我还是非常希望继续用小票机做些什么,比如说,它还能打印二维码!这样只要我能用网站保存照片,用户就可以通过二维码链接访问到他们的照片,这样二维码小票也就间接地成为了他们手上拿到的照片。而且,我想起来 aalib 里面是支持 HTML 格式导出的,而且图片还会带四级灰度色彩,比普通的字符又更有表现力,这就是又一个劣势转换成优势的例子!
然而下一个问题接踵而来,我发现别人写的那个 python-aalib 的库竟然没有封装到 aalib 导出 HTML 的这个功能!这意味着我必须在他的源码基础上再增加接口,这回我就不得不把 aalib 的 C 库、python-aalib 的源代码研究了一番,顺便还学习了 Python 的 Ctypes 用法,自己来完成接口封装这一层。最后的最后,我还要再写一个服务器的接口,让客户端可以上传 HTML 并生成显示链接。到此为止,我已经从输入端(摄像头)、输出端(热敏打印机)、客户端、服务器端走了一圈,在这一个月时间里饥渴地阅读着资料和不断试验,才把所需的全部技术打通,顺便把项目展示的网站 (https://polascii.szdiy.org/) 都搭起来了。
3. 使用体验的调整
在所有技术都准备好以后,剩下的时间就是为展出做好准备了。为了要在 Maker Faire 上面顺利展出,各种可能影响使用体验的各种细节都要考虑清楚,否则稍微一点意外就有可能是 Showstopper。在整套方案搭好之后,借 SZDIY 每周四聚会的时间,我也让大家试用了几次,看看他们遇到什么样的问题,以及有什么改进建议。