重写了一下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


评论

  1. 西瓜 的头像
    西瓜

    老哥是河大本科的吗?

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注