正在加载...
829 字
4 分钟
OneImg-基于go的图片转webp存储的图床系统
2025-09-23

众所不周知,雾创岛已经从Wordpress迁移到Astro,但Astro作为静态的博客系统,已经不能和Wordpress一样直接将图片上传到Wordpress的媒体库,导致了图片资源的上传、管理都变得比较麻烦,所以,为了解决这个问题,雾创岛开发了一个基于go的图片转webp存储的图床系统,OneImg。

当然你会觉得图片也是静态资源,为什么不能直接将图片放到Astro博客的静态资源目录呢?

  1. 首先,Astro的静态资源目录是存放在GitHub Pages中的,使用的是EdgeOne Pages作为博客的静态资源托管,EdgeOne Pages的存储空间也是有限制的,如果图片体积过大,可能会导致上传失败,或者上传成功后,图片无法正常显示。
  2. 其次,就是图片转换会比较麻烦。雾创岛会将png、jepg格式的图片转换为webp格式,如果手动转换后再移动到Astro的静态目录、再复制路径到markdown文件中,就会比较麻烦。
  3. 最后,就是图片管理和复用的问题,如果放到Astro的静态目录,那么查找图片和管理图片都会变得麻烦。

当然,也有伙伴给我推荐了一个 黑曜石MarkDown编辑器,它的功能强大好用,已经能满足大部分的markdown编辑需求,但是,它并不符合我的需求。

我需要的一个能直接将图片直接转换为webp格式并直接返回外链,还能很方便管理的图片存储系统。

于是,我便开发了个OneImg图床系统,它基于go语言开发,使用Gin作为web框架,使用Vue作为前端,SQLite3作为数据库,部署到Docker容器内。

OneImg

它支持拖拽上传、批量上传、自动转换为webp、方便的管理,以及查看、删除等功能。

OneImg的安装和配置非常简单,只需要clone项目到本地,并运行docker-compose up -d --build命令,即可启动OneImg。

注意:

  1. OneImg目前仅支持上传图片的服务器的本地存储,暂不支持WebDav、Cloudflare R2和其它OOS存储服务。
  2. 而且我也仅测试了SQLite3数据库的功能,虽然支持Mysql数据库,但是目前我并没有测试过,不确定其功能可用性,如果有需求可以提issue,或者自己 fork 项目,自行修改和开发。

项目地址https://github.com/onexru/oneimg

OneImg还有很多奇奇怪怪的小问题,不过能用就行啦。

OneImg

不过,OneImg已经将项目开源了,大家可以自行 fork 项目,根据自己的需求,进行修改和开发。

后面如果还有更多的需求,我会继续开发OneImg,并添加更多的功能,并修复掉一些问题。

声明#

OneImg大部分代码都是通过腾讯的CodeBuddy国际版AI进行开发的,我仅写了基础的项目结构和框架,Vue前端部分大部分由AI生成开发,所以样式比较丑。 当然我也优化了前端的样式和部分布局。还是那句话,能用就行。

项目开源#

GitHub地址:https://github.com/onexru/oneimg

项目截图#

OneImg OneImg OneImg OneImg OneImg OneImg

OneImg-基于go的图片转webp存储的图床系统
https://www.tr0.cn/oneimg/
作者
小森
发布于
2025-09-23
许可协议
CC BY-NC-SA 4.0