ImageFlow 一款更适合你的图床

一直以来我都是用的chevereto来作为图床管理,但是这个作者太脑瘫了。项目越改越辣鸡,经常增加一些虚头八脑的社交之类的功能,导致整个项目越来越臃肿卡顿,至于市面上其他的项目,我也不想再过多尝试,大部分都是基于多用户场景的,和我想要的相违背。本着既然没有,那就自己创造,还能加点我自己喜欢的功能,例如avif和webp格式自动压缩,API自适应横屏竖屏输出。于是 ImageFlow 就诞生了。

仓库地址:https://github.com/Yuri-NagaSaki/ImageFlow/ 欢迎点点star

✨ 主要特性

  • API 密钥认证:安全的 API 密钥验证机制,保护您的图片上传功能
  • 自适应图像服务:根据设备类型(桌面端/移动端)自动提供横向或纵向图片
  • 现代格式支持:自动检测浏览器兼容性并提供 WebP 或 AVIF 格式图片
  • 简单的 API:通过简单的 API 调用获取随机图片
  • 用户友好的上传界面:支持拖拽上传,具有暗黑模式和实时预览功能
  • 图片管理功能:通过直观的管理界面查看、筛选和删除图片
  • 自动图像处理:上传后自动检测图像方向并转换为多种格式
  • 多存储支持:支持本地存储和 S3 兼容存储

🚀 技术优势

  1. 安全性:API 密钥验证机制确保图片上传和管理功能的安全访问
  2. 格式转换:自动将上传的图片转换为 WebP 和 AVIF 格式,减少 30-50% 的文件大小
  3. 设备适配:为不同设备提供最合适的图片方向
  4. 热重载:上传的图片无需重启服务即可立即可用
  5. 并发处理:使用 Go 的并发特性高效处理图像转换
  6. 可扩展性:模块化设计便于扩展和定制
  7. 响应式设计:完美适配桌面端和移动端设备
  8. 暗黑模式支持:自动适应系统主题。
  9. 灵活存储:支持本地和 S3 兼容存储,通过 .env 文件轻松配置

📸 界面预览

ImageFlow
ImageFlow
ImageFlow
ImageFlow

快速开始

可以选择两种方式,都非常方便,一种是Docker,一种是 二进制部署。

先说最简单的Docker吧

Docker部署

拉取并进入仓库

git clone https://github.com/Yuri-NagaSaki/ImageFlow && cd ImageFlow
终端中显示Git clone命令执行过程

修改.env

cp .env.example .env
vim .env

根据所选择的部署模式调整 参数,具体 S3 的 下列参数如何获得这里就不再过多赘述了

# API Keys
API_KEY=your_api_key_here  # 这是你的API key 用于身份验证登录

# Storage Configuration
STORAGE_TYPE=local  # Options: local, s3  根据部署模式选择
LOCAL_STORAGE_PATH=static/images # Local

# S3 Configuration (required when STORAGE_TYPE=s3)
S3_ENDPOINT=
S3_REGION=
S3_ACCESS_KEY=
S3_SECRET_KEY=
S3_BUCKET=

# Custom Domain (optional)
CUSTOM_DOMAIN=   # 这里是S3 一般都会有的自定义域名。

拉取镜像准备部署

docker compose up -d
一般默认监听8686端口,如有必要,自行修改。
Docker终端显示docker compose和ps命令输出

本地部署

安装依赖

安装 Go (1.22+)

安装 WebP 工具: sudo apt-get install webp (Ubuntu/Debian)

安装 AVIF 工具: sudo apt-get install libavif-bin (Ubuntu)

注意:这里的需要avif 1.0版本以上,Debian系统默认安装的是0.9 版本。需要自行编译安装

Ubuntu 24.04 默认即可安装最新版本

终端显示Ubuntu版本信息

下载二进制文件修改env

默认提供 X86 和ARM的,自行选择

git clone https://github.com/Yuri-NagaSaki/ImageFlow && cd ImageFlow
https://github.com/Yuri-NagaSaki/ImageFlow/releases/download/v1.0/imageflow-x86
chmod 777 imageflow-x86
cp .env.example .env
vim .env
./imageflow-x86
终端显示文件操作与服务器启动

创建service

[Unit]
Description=ImageFlow Service
After=network.target

[Service]
ExecStart=/path/to/imageflow
WorkingDirectory=/path/to/imageflow/directory
Restart=always
User=youruser

[Install]
WantedBy=multi-user.target

如何使用

打开 IP:8686端口 输入你在env设置的API_Key

开始上传图片

注意:由于压缩在本地进行,请选择CPU较强的进行部署

图片上传界面,支持拖放和选择文件
二次元角色插画,两名女孩亲密互动

点击右上进入管理

上传工具界面,支持多种图片格式。

这里会获取到你上传和压缩后的所有图片

动漫角色图片集合,文件管理界面

当然你也可以对某个图片进行删除,他会连带删除原始图片 avif 和webp 。

蓝发动漫角色,紫色服装,卡通风格

访问API

API的地址是 IP:8686/api/ramdom

窗前的动漫女孩插图
动漫少女化妆,身上涂鸦涂装

到此全部完成!

🤝 贡献

欢迎贡献!随时提交代码、报告问题或提出改进建议!

评论

  1. Serenite
    1 月前
    2025-3-23 23:08:13

    可以支持webdav么?

    • Serenite
      2 周前
      2025-4-12 19:22:46

      能支持 WEBDAV 的话就很好,还有就是有那种傻瓜式的一键部署脚本吗?

  2. 白砂糖甜
    已编辑
    1 周前
    2025-4-13 14:02:11

    可以自己挂载webdav到/local路径,曲线支持webdav。另外这个 图片标签好像不起作用 这会再看正常了,虽然上传显示失败,到那时图片管理里可以正常显示。

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇