ImageFlow 是一个为现代网站和应用程序设计的高效图像服务系统。它能根据设备类型自动提供最合适的图像,并支持 WebP 和 AVIF 等现代图像格式,显著提升网站性能和用户体验。
cwebp)avifenc)git clone https://github.com/Yuri-NagaSaki/ImageFlow.git
cd ImageFlow
go mod init github.com/Yuri-NagaSaki/ImageFlow
go mod tidy
go build -o imageflow
[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
sudo systemctl enable imageflow
sudo systemctl start imageflow
git clone https://github.com/Yuri-NagaSaki/ImageFlow.git
cd ImageFlow
.env 文件cp .env.example .env
# 编辑 .env 文件进行配置
docker compose up -d
服务将在 http://localhost:8686 启动。
通过创建和编辑 .env 文件配置系统:
# API 密钥
API_KEY=your_api_key_here
# 存储配置
STORAGE_TYPE=local # 选项:local, s3
LOCAL_STORAGE_PATH=static/images
# S3 配置(当 STORAGE_TYPE=s3 时需要)
S3_ENDPOINT=
S3_REGION=
S3_ACCESS_KEY=
S3_SECRET_KEY=
S3_BUCKET=
# 自定义域名(可选)
CUSTOM_DOMAIN=
.env 文件通过卷挂载用于系统配置.env 文件中的 STORAGE_TYPE 配置图片上传功能需要 API 密钥认证。您可以:
.env 文件中设置 API 密钥访问 http://localhost:8686/ 的上传界面。您可以:
访问 http://localhost:8686/manage.html 的管理界面。您可以:
通过 API 获取随机图片(无需 API 密钥):
GET http://localhost:8686/api/random
系统会根据请求头中的设备类型和浏览器支持返回最合适的图片。
| 接口 | 方法 | 描述 | 参数 | 认证 |
|---|---|---|---|---|
/api/random | GET | 获取随机图片 | orientation:可选,指定 "landscape" 或 "portrait" | 不需要 |
/upload | POST | 上传新图片 | Form 数据,字段名 "images[]" | 需要 API 密钥 |
/api/delete-image | POST | 删除图片及其所有格式 | JSON 数据,包含 id 和 storageType | 需要 API 密钥 |
/validate-api-key | POST | 验证 API 密钥 | 请求头中的 API 密钥 | 不需要 |
ImageFlow/
├── config/ # 配置相关代码
├── handlers/ # HTTP 处理器
│ ├── delete.go # 图片删除处理器
├── scripts/ # 实用脚本
├── static/ # 静态文件和图片存储
│ ├── favicon.ico # 网站图标
│ ├── favicon.svg # SVG 网站图标
│ ├── favicon-16.png # 16px 网站图标
│ ├── favicon-32.png # 32px 网站图标
│ ├── favicon-48.png # 48px 网站图标
│ ├── imageflow1.png # 预览图片 1
│ ├── imageflow2.png # 预览图片 2
│ ├── images/ # 图片存储目录
│ │ ├── landscape/ # 横向图片
│ │ │ ├── avif/ # AVIF 格式
│ │ │ └── webp/ # WebP 格式
│ │ ├── portrait/ # 纵向图片
│ │ │ ├── avif/ # AVIF 格式
│ │ │ └── webp/ # WebP 格式
│ │ └── original/ # 原始上传图片
│ ├── index.html # 主页
│ ├── styles.css # 样式表
│ ├── manage.html # 图片管理界面
│ ├── manage.js # 图片管理功能脚本
│ └── upload.js # 上传功能脚本
├── utils/ # 实用函数
├── main.go # 程序入口
├── Dockerfile # Docker 构建文件
├── docker-compose.yml # Docker Compose 配置
├── .env # 环境变量
└── README.md # 项目文档
欢迎贡献!随时提交代码、报告问题或提出改进建议!
本项目基于 MIT 许可证 - 详见 LICENSE 文件。
Blog - 猫猫博客
⭐ 如果您喜欢这个项目,请给它一个星标!⭐
由 Yuri NagaSaki 用 ❤️ 制作
Content type
Image
Digest
sha256:36c322bcd…
Size
40.2 MB
Last updated
8 months ago
Requires Docker Desktop 4.37.1 or later.