重写了一下 ImageServer 小工具

做图像的,难免天天要看大量的图,一张一张点开看十分麻烦。之前组里面有个小工具,可以在浏览器里面将一整个文件夹的图片都展示出来,一目百图,并且还可以用这个 Trick 从服务器上快速下载东西,比较好用。之后自己改了一个版本,然后去年清明学 Go 的时候又用 Go 写了一个版本。

随着需求不断增多,原来的 Go 版本已经不太够用了。今年五一,正好重写一遍。

先来说说 Python 版。这个版本完全是拿 SimpleHTTPServer 改的,啥啥都没考虑。优点是简单、没依赖,搞个 Python36 就能运行。缺点是单线程比较慢,然后比较丑,界面丑、代码丑。——实用至上的话,这个版本已经够用了。

组里同事也基于 Flask 写过一个版本,我没拿到。暂且不表。

去年清明学 Go 的时候,练手项目就是 ImageServer。当时使用最原生的东西,实现了看图、文件夹比较等功能,还用 Bootstrap 做了个能看得过眼的界面。

然后在一年的使用中,发现几个事情。首先是使用过的所有版本都不支持分页,于是如果一个文件夹里面有几万张图,分分钟卡死浏览器;然后是目前图片大多存在 LMDB 里面,或者业务方给到的是一个 CSV/TXT 文件,这个时候就需要先把图片搞到本地,再用 ImageServer 来看图,也比较麻烦。

所以这个五一因为「疫情」宅在家里哪儿也去不了,就把这个 ImageServer 给重写了,顺带学一下 Gin 框架的基本使用。

主要加的东西:

  • 支持读取文件夹(这个不用说了吧,最基本的功能)
  • 支持读取 CSV、TSV、TXT 等文本文件,并指定列号
  • 支持读取 LMDB,并模拟文件夹功能(先把所有 key 都读出来,然后搞了个「树」)
  • 支持分页(文件夹和文件一起参与分页)

后续规划:

  • 文件夹比较(这个上一个 Go 版本中是有的,这个版本没想好怎么加上去)
  • 布局更改,比如可以切换一行显示 2 张、3 张、4 张、6 个张片(上一个 Go 版本里面也是有的,就是比较丑……)
  • 区分不同文件类型,如片用 img 标签、视频用 video 标签、音频用 audio 标签,其他默认展示一个「文件」图片(上一个 Go 版本里面「硬」做了一个区分图片和视频的东西,相当暴力,所以想改一下)
  • 想办法找到一个不那么坑的 LMDB 库……目前的 LMDB 库比较坑,交叉编译坑了我好久都跑不起来,只能各种妥协:Github Action 只能自动编译 Linux-amd64 的版本,其他的都需要自己手动无脑编译一下

总之,目前状态是「基本能用」,后面有时间慢慢加功能吧。


哦对了,Repo 是这个: https://github.com/jinyu121/ImageServer

《重写了一下 ImageServer 小工具》上有1条评论

发表回复

您的电子邮箱地址不会被公开。