ImageProxy
ImageProxy 是一个高性能的图片代理服务,它能够自动下载、调整大小并优化图片,同时支持 WebP 格式转换。这个服务特别适合用于优化网站图片加载性能。
功能特点
- 支持 HTTP/HTTPS 图片源
- 自动调整图片大小
- 转换为 WebP 格式以减小文件大小
- 支持自定义最大尺寸
- 详细的性能指标输出
- 内置 CORS 支持
- 长期缓存支持
技术栈
- Rust
- Axum (Web 框架)
- Tokio (异步运行时)
- image-rs (图片处理)
- libwebp (WebP 转换)
快速开始
使用 Docker
docker run -p 2999:2999 your-imageproxy-image
从源码构建
- 确保已安装 Rust 工具链
- 克隆仓库
- 构建项目:
cargo build --release
- 运行服务:
./target/release/imageproxy
使用方法
基本用法
http://your-server:2999/https://example.com/image.jpg
调整最大尺寸
http://your-server:2999/max_size/500/https://example.com/image.jpg
响应头信息
服务会在响应中包含以下有用的头信息:
Content-Type: 始终为image/webpCache-Control: 设置为长期缓存X-Original-Content-Type: 原始图片的 Content-TypeX-Original-Size: 原始图片大小(字节)X-Original-Width: 原始图片宽度X-Original-Height: 原始图片高度X-Output-Max-Size: 输出图片的最大尺寸X-Converted-Size: 转换后的图片大小X-Download-Time: 下载耗时(毫秒)X-Resize-Time: 调整大小耗时(毫秒)X-Convert-Time: 转换耗时(毫秒)
限制
- 最大支持下载 10MB 的图片
- 仅支持图片格式的输入
- 输出格式固定为 WebP
环境变量
LISTEN: 监听地址和端口(默认:0.0.0.0:2999)RUST_LOG: 日志级别(默认:info)
性能优化
- 使用 WebP 格式进行高效压缩
- 支持异步处理
- 内置缓存控制
- 优化的图片处理算法
许可证
[待定]
贡献
欢迎提交 Issue 和 Pull Request!
Description
Languages
Rust
97.3%
Dockerfile
2.7%