众所不周知,雾创岛已经从Wordpress迁移到Astro,但Astro作为静态的博客系统,已经不能和Wordpress一样直接将图片上传到Wordpress的媒体库,导致了图片资源的上传、管理都变得比较麻烦,所以,为了解决这个问题,雾创岛开发了一个基于go的图片转webp存储的图床系统,OneImg。
当然你会觉得图片也是静态资源,为什么不能直接将图片放到Astro博客的静态资源目录呢?
- 首先,Astro的静态资源目录是存放在GitHub Pages中的,使用的是EdgeOne Pages作为博客的静态资源托管,EdgeOne Pages的存储空间也是有限制的,如果图片体积过大,可能会导致上传失败,或者上传成功后,图片无法正常显示。
- 其次,就是图片转换会比较麻烦。雾创岛会将png、jepg格式的图片转换为webp格式,如果手动转换后再移动到Astro的静态目录、再复制路径到markdown文件中,就会比较麻烦。
- 最后,就是图片管理和复用的问题,如果放到Astro的静态目录,那么查找图片和管理图片都会变得麻烦。
当然,也有伙伴给我推荐了一个 黑曜石MarkDown编辑器,它的功能强大好用,已经能满足大部分的markdown编辑需求,但是,它并不符合我的需求。
我需要的一个能直接将图片直接转换为webp格式并直接返回外链,还能很方便管理的图片存储系统。
于是,我便开发了个OneImg图床系统,它基于go语言开发,使用Gin作为web框架,使用Vue作为前端,SQLite3作为数据库,部署到Docker容器内。
它支持拖拽上传、批量上传、自动转换为webp、方便的管理,以及查看、删除等功能。
OneImg的安装和配置非常简单,只需要clone项目到本地,并运行docker-compose up -d --build
命令,即可启动OneImg。
注意:
- OneImg目前仅支持上传图片的服务器的本地存储,暂不支持WebDav、Cloudflare R2和其它OOS存储服务。
- 而且我也仅测试了SQLite3数据库的功能,虽然支持Mysql数据库,但是目前我并没有测试过,不确定其功能可用性,如果有需求可以提issue,或者自己 fork 项目,自行修改和开发。
项目地址:https://github.com/onexru/oneimg
OneImg还有很多奇奇怪怪的小问题,不过能用就行啦。
不过,OneImg已经将项目开源了,大家可以自行 fork 项目,根据自己的需求,进行修改和开发。
后面如果还有更多的需求,我会继续开发OneImg,并添加更多的功能,并修复掉一些问题。
声明
OneImg大部分代码都是通过腾讯的CodeBuddy国际版AI进行开发的,我仅写了基础的项目结构和框架,Vue前端部分大部分由AI生成开发,所以样式比较丑。 当然我也优化了前端的样式和部分布局。还是那句话,能用就行。
项目开源
GitHub地址:https://github.com/onexru/oneimg
项目截图