logo NodeSeekbeta

ImageFlow 一款可能更适合你的图床

我受不了大部分API都是基于先上传到存储桶后写路径到TXT形式再通过随机读取的部署方式。
终于抽空自己搓了一个。
部署请见博客:https://catcat.blog/imageflow-install.html

✨Github地址

ImageFlow

✨ 主要特性

  • API 密钥认证:安全的 API 密钥验证机制,保护您的图片上传功能
  • 自适应图像服务:根据设备类型(桌面端/移动端)自动提供横向或纵向图片
  • 现代格式支持:自动检测浏览器兼容性并提供 WebP 或 AVIF 格式图片
  • 简单的 API:通过简单的 API 调用获取随机图片
  • 用户友好的上传界面:支持拖拽上传,具有暗黑模式和实时预览功能
  • 自动图像处理:上传后自动检测图像方向并转换为多种格式
  • 异步处理:图像转换在后台进行,不影响主服务
  • 高性能:优化的网络性能以减少加载时间
  • 易于部署:简单的配置和部署流程
  • 多存储支持:支持本地存储和 S3 兼容存储(如 R2)

🚀 技术优势

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

📸 界面预览
ImageFlow
ImageFlow
ImageFlow
ImageFlow
ImageFlow
ImageFlow
ImageFlow
ImageFlow
ImageFlow

12345
  • @sayyiku #0

    刚才又按照你的博客试了一遍,用的是Docker 部署

    上传图片后右边出现的原图链接是正确的
    image
    点击右边图片后
    image

    到管理后台点击图片的链接有问题
    image

  • 是猫总,我死了 xhj002

  • bd

  • 猫总勤政! xhj012

  • bd。等有空弄一下试试看

  • 牛,like and mark

  • 大佬的项目非常好,加个简单的管理页就好了,上传图后没出图链把我整不会了,还有就是支持上传可选多后端应对不同场景 ac08

  • 花了半小时用上了,以下 bucket 用 test 代替

    root@hetzner-fsn1-002:~/ImageFlow# ./imageflow
    2025/03/19 14:51:00 Initializing S3 client with endpoint: https://s3.dualstack.us-east-1.amazonaws.com
    2025/03/19 14:51:00 S3 client initialized successfully for bucket: test
    2025/03/19 14:51:00 Initializing S3 client with endpoint: https://s3.dualstack.us-east-1.amazonaws.com
    2025/03/19 14:51:00 S3 client initialized successfully for bucket: test
    2025/03/19 14:51:00 Created directory: static/images/original/landscape
    2025/03/19 14:51:00 Created directory: static/images/original/portrait
    2025/03/19 14:51:00 Created directory: static/images/landscape/webp
    2025/03/19 14:51:00 Created directory: static/images/landscape/avif
    2025/03/19 14:51:00 Created directory: static/images/portrait/webp
    2025/03/19 14:51:00 Created directory: static/images/portrait/avif
    2025/03/19 14:51:00 Starting server on 0.0.0.0:8686 with s3 storage
    2025/03/19 14:51:43 Storing to S3: bucket=test, key=original/landscape/20250319_145143_306.jpg, size=69222 bytes
    2025/03/19 14:51:44 Successfully stored object in S3: original/landscape/20250319_145143_306.jpg (URL: https://s3.dualstack.us-east-1.amazonaws.com/original/landscape/20250319_145143_306.jpg)
    2025/03/19 14:51:44 Original image stored: original/landscape/20250319_145143_306.jpg
    2025/03/19 14:51:44 Starting WebP conversion, input size: 69222 bytes
    2025/03/19 14:51:44 WebP conversion successful, output size: 38968 bytes
    2025/03/19 14:51:44 Storing to S3: bucket=test, key=landscape/webp/20250319_145143_306.webp, size=38968 bytes
    2025/03/19 14:51:45 Successfully stored object in S3: landscape/webp/20250319_145143_306.webp (URL: https://s3.dualstack.us-east-1.amazonaws.com/landscape/webp/20250319_145143_306.webp)
    2025/03/19 14:51:45 WebP image stored: landscape/webp/20250319_145143_306.webp
    2025/03/19 14:51:45 Starting AVIF conversion, input size: 69222 bytes
    2025/03/19 14:51:46 AVIF conversion successful, output size: 45628 bytes
    2025/03/19 14:51:46 Storing to S3: bucket=test, key=landscape/avif/20250319_145143_306.avif, size=45628 bytes
    2025/03/19 14:51:46 Successfully stored object in S3: landscape/avif/20250319_145143_306.avif (URL: https://s3.dualstack.us-east-1.amazonaws.com/landscape/avif/20250319_145143_306.avif)
    2025/03/19 14:51:46 AVIF image stored: landscape/avif/20250319_145143_306.avif
    

    自定义域名有什么用?

    信息给出的 URL 是 https://s3.dualstack.us-east-1.amazonaws.com/landscape/avif/20250319_145143_306.avif

    不是 https://<bucket>.s3.dualstack.us-east-1.amazonaws.com/landscape/avif/20250319_145143_306.avif

  • @sayyiku #0
    用边缘计算可以做到类似的功能
    xhj003

  • 牛啊,前段时间让AI帮我搞类似需求的php程序,鼓捣半小时也没成功,终于有人搓了

12345

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有72033位seeker

🎉欢迎新用户🎉