做了一个图床之后:关于 Imgos 的一些小记
最近一直在折腾一个小东西。
准确来说,也不能算特别小。
它叫 Imgos图床。
官网:
最开始做它的时候,其实并没有想太多。
就是自己在写文章、做网站、整理 Markdown 文档的时候,经常需要处理图片。
截图 → 上传 → 获取链接 → 粘贴到文章。
事情本身非常简单。
但重复做几十次、几百次之后,就会开始觉得:
这个流程是不是还能再简单一点?
于是就有了 Imgos。
一、最开始只是觉得上传图片很麻烦
以前写技术文章的时候,经常会遇到这种情况。
写到一半:
«“这里得放一张截图。”»
于是打开图片网站。
选择文件。
等待上传。
复制链接。
回到编辑器。
粘贴。
继续写。
过一会儿又来一次。
再过一会儿又来一次。
如果一天写几十张截图,这个流程其实挺折腾人的。
尤其是使用 Markdown 的时候。
我越来越希望图片能够变成一种“无感”的东西。
看到图片:
直接粘贴。
然后图片自动上传。
最后只留下一个 URL。
所以后来开始研究 API、Markdown、PicGo 以及各种图片托管方案。
二、图床看起来简单,真正做起来并没有那么简单
刚开始接触图床的时候,会觉得:
«不就是上传一个文件,然后返回一个 URL 吗?»
真正开始做以后才发现,事情远比想象中复杂。
至少要考虑:
- 图片上传
- 文件类型
- 文件大小
- 图片访问
- HTTPS
- CDN
- API
- 防盗链
- 图片管理
- 删除
- 缓存
- 异常处理
- 图片安全
- 服务稳定性
如果只是自己玩一下,当然没那么多事情。
但如果真的想让别人使用,就会发现每一个小问题最后都会变成一个问题。
比如:
图片上传成功了,但是访问不了怎么办?
API 返回成功了,但是 CDN 还没有同步怎么办?
用户上传了一个特别大的图片怎么办?
有人恶意刷接口怎么办?
这些问题都会慢慢冒出来。
三、为什么最后做成了 Imgos?
其实现在网上已经有很多图床。
免费图床也很多。
海外图床、国内图床、开源图床、对象存储……
所以从某种意义上来说:
再做一个图床,似乎并不是一件特别“必要”的事情。
但我觉得软件和网站有时候就是这样。
并不是因为“没有”,才去做。
而是因为:
我想做一个自己觉得顺手的。
这可能就是 Imgos 最初比较真实的原因。
四、我希望它首先是一个简单的工具
我不太喜欢特别复杂的工具。
上传一张图片,本来就是一个非常简单的事情。
如果为了上传一张图片,需要研究半天后台菜单,我觉得这个过程就有点反过来了。
所以我比较希望 Imgos 保持一个简单的思路:
上传图片。
得到链接。
结束。
当然,随着功能越来越多,网站也不可能永远保持极简。
所以现在又逐渐加入了一些开发者比较需要的东西。
比如:
API。
PicGo。
Typora。
WordPress。
这些东西看起来互不相关,但其实最终都是在解决同一个问题:
«怎么让图片上传更加顺手?»
五、API可能是图床最有意思的地方
普通用户使用图床,可能只需要网页。
但是开发者不一样。
开发者可能会想:
«能不能让我自己的程序直接上传?»
答案当然是可以。
于是就有了 API。
整个过程其实非常简单:
程序
↓
发送图片
↓
Imgos API
↓
图片处理
↓
返回 URL
然后程序就可以继续做自己的事情。
例如自动生成 Markdown:

这样图片上传就从一个“人工操作”,变成了一个可以被程序调用的基础能力。
我觉得这也是图床比较有意思的地方。
六、PicGo也是我比较关注的一部分
如果经常写 Markdown,应该多少接触过 PicGo。
它解决的问题其实非常直接:
把图片上传这件事情自动化。
例如在编辑器里:
截图
↓
Ctrl + V
↓
PicGo
↓
图床
↓
返回图片 URL
最终 Markdown 里面直接出现图片。
这个体验和传统的:
截图
↓
保存
↓
打开网页
↓
选择文件
↓
上传
↓
复制地址
↓
返回编辑器
还是有明显区别的。
所以从一开始,我就希望 Imgos 不只是一个“网页上传图片的网站”,而是能够融入开发者自己的工作流。
七、图床最难的其实不是上传
如果让我重新做一次图床,我可能还是会低估一个问题:
稳定。
上传图片其实并不难。
真正难的是:
«半年以后还能不能正常打开?»
一年以后呢?
两年以后呢?
文章里面的图片还能不能加载?
这其实也是我后来越来越重视的问题。
因为对于博客来说,图片并不是“上传完就结束”。
一张图片可能会被放进一篇文章。
一篇文章可能会存在很多年。
所以图床实际上承担的是:
图片展示和访问。
这和单纯的文件上传,是两件不同的事情。
八、我也越来越理解为什么很多人喜欢“免费图床”
以前看到“免费图床”这几个字的时候,第一反应就是:
«免费,当然好。»
后来自己做了之后,才发现“免费”其实并不是一个特别简单的概念。
服务器需要成本。
存储需要成本。
CDN 需要成本。
带宽需要成本。
接口需要维护。
安全也需要成本。
所以一个图床能够长期运行,本身就需要持续投入。
这也是为什么我现在看一个免费图床的时候,会更加关注:
它能不能长期维护。
而不只是:
它给了我多少 GB。
九、做 Imgos 以后,也开始关注其他图床
做了图床之后,我反而开始认真研究其他图床。
国内的、海外的、开源的、免费的、收费的。
有些图床非常简单。
有些功能特别多。
有些海外图床运行了很多年。
也有一些曾经很流行的服务后来发生了各种变化。
这让我越来越觉得:
图床这个东西其实挺有意思。
它看起来只是“存图片”。
但背后实际上涉及:
- 存储
- CDN
- 网络
- API
- 缓存
- 安全
- 数据管理
- 网站运营
对于一个开发者来说,里面能研究的东西其实很多。
十、我为什么还在继续更新?
说实话,做一个网站并不难。
真正难的是:
持续维护。
上线第一天可能很有激情。
第二天也不错。
一个月以后呢?
半年以后呢?
如果只是为了做一个项目截图,其实做到能运行就结束了。
但是如果真的想把它做成一个长期项目,就需要不断处理各种细节。
所以现在对我来说,Imgos已经不只是一个“图床程序”。
更像是一个长期维护的小项目。
遇到问题就改。
发现不方便的地方就调整。
有人提出建议,就研究一下。
慢慢一点一点完善。
十一、我希望它最后变成什么样?
其实现在还没有一个特别宏大的答案。
我没有想着一定要做成多大的平台。
目前比较简单:
让图片上传变得简单一点。
让 Markdown 用户少复制几次。
让开发者可以方便调用 API。
让博客作者能够比较舒服地管理自己的图片。
如果以后能够有更多人使用,那当然很好。
如果最后只是成为一个自己一直维护的小项目,我觉得也没有什么不好。
毕竟很多项目最开始存在的原因,本来就只是:
«“我觉得这个东西应该可以更方便一点。”»
十二、写在最后
做 Imgos 的过程中,我最大的感受其实不是“做了一个图床”。
而是发现:
一个看起来很简单的东西,真的认真做起来以后,里面会藏着很多细节。
上传一张图片只需要几秒钟。
但是让这张图片能够稳定地被访问,让整个上传流程足够简单,让 API 足够好用,让网站能够一直维护下去,却需要做很多看不到的事情。
所以目前的 Imgos 还在继续更新。
如果你刚好也在寻找一个图床,或者只是对图片托管、Markdown、API、PicGo 这些东西感兴趣,可以去看看:
Imgos图床:
这篇文章也算是给这个小项目留下的一份记录。
以后如果 Imgos 继续更新,我也会继续把这里当成一个小小的开发日志。
项目地址:
关键词:
Imgos图床、免费图床、图床网站、图片外链、Markdown图床、PicGo图床、API图床、图片托管、国内图床

浙公网安备 33010602011771号