Simple Photo Gallery 背后的故事
跳转到主要内容

Simple Photo Gallery 背后的故事

作者:Vladimir Haltakov

大约六年前,我开始做 Simple Photo Gallery,是为了解决一个很简单的问题:我想找个好看的方式,把旅途中的照片和刚出生的宝宝的照片分享给亲友。我不想只是把一堆图片丢进相册,然后发个链接。我想_讲一个故事_。我想加上介绍,把照片分成有意义的几个部分,并让大家知道每张照片里是什么。

第一次认真做一篇大型「照片故事」,是为了记录 2017 年的澳大利亚之旅。路上我们学到了很多有趣的东西,我希望相册能把这段体验也传达出来。我按城市和地点整理照片,给每个分区加了文字,还给许多照片写了说明。问题是,当时根本找不到适合做这件事的工具。

我想要的工具既能讲故事,做出的相册又能轻松分享给祖母。她主要用平板电脑和聊天应用。我发给她一个链接,她点一下就应该能看到全部内容。不用登录,不用额外的服务,也没有复杂操作。当然,手机、电脑和平板都得好用。

最后,我决定自己做一个。

最初的版本

Simple Photo Gallery 的第一个版本是用 Python 写的。我发现一个很棒的 JavaScript 库 PhotoSwipe,它的图片查看器好看又流畅。我把它封装进一个小小的命令行工具。工具会扫描照片文件夹、生成缩略图,再把所有内容打包成静态相册。产物就是普通的 HTML、CSS 和 JavaScript 文件,想托管在哪里都可以。

我把工具开源,在整理我们一次次旅行和陪伴儿子成长的照片时,陆续加了很多功能。这里是 2017 年的第一版澳大利亚相册。

不过,这个工具并不好用。

你要用 pip 安装 Python 软件包,在终端里运行命令。如果想用分区之类的进阶功能,还要手动修改 JSON 文件。实际用得起来的,大多是有一定技术背景的人。即便如此,用的人还是一年比一年多。

还有个有趣的细节:每个生成的相册底部都有一行小字,「使用 Simple Photo Gallery 制作」。这样我可以很容易地在 Google 上搜到相册,看看大家做了些什么。当然,这是开源项目,谁都可以删掉那行字,所以网上实际的相册可能更多。即便这样,项目还是收获了 200 多个 GitHub 星标。对一个周末做出来的小项目来说,真有些不可思议。

看到越来越多的人在用,我就越来越常想: 「它明明_这么_难用,却还有这么多人觉得有价值。也许我该把它做得更简单。」

构思了好几年的新版本

几乎从一开始我就在计划做 v2。我想用现代 JavaScript 全部重写,解决 Python 版本的一些根本限制,再补上大家一直在要的功能。尤其是从大型、多层嵌套的文件夹自动生成相册。好几个人找到我,说自己的照片档案很大,需要这样的工具。但在原来的架构上,很难把这个功能做得好。

我想了好几年。终于在今年早些时候对自己说:做吧。

我说服了一位好友 Tomasz 加入,和我一起做平等的合作伙伴。他是个很出色的开发者。我们用 Astro 和一套现代、高速的 TypeScript 技术从头重写了工具。2025 年 9 月,我们在 GitHub 和 npm 上发布了新的开源版 Simple Photo Gallery v2。

这是现在用 v2 做出的澳大利亚相册。

新方向:开源工具和托管应用

在开源命令行工具之外,我们也开始做一款新的网页应用。它以开源引擎为基础,提供全托管服务,负责托管、存储和优化。你可以用可视化编辑器做相册,不必修改 JSON 文件。上传一个照片文件夹,加上说明,点击「保存」即可。没有技术背景的人也能轻松使用。

这就是我们现在在做的产品。它已经可以正常使用,我们还有一长串想做的功能。如果想试试看,欢迎访问 Simple Photo Gallery。也可以看看示例,找点灵感。

接下来

我们正在规划一些有意思的 AI 功能,让照片的挑选和整理更省事。随着新功能陆续开发,我会在这个博客和 @haltakov 上分享进展。