一个基于 EdgeOne Pages Functions 和 cnb.cool 的随机图片 API ,提供随机图片展示功能。
- 🎲 随机图片获取 - 从大量图片库中随机返回图片
- 🚀 高性能 - 基于 EdgeOne 边缘计算,全球加速
- 📊 详细信息 - 返回图片路径、目录、尺寸等详细信息
- 🔒 CORS 支持 - 支持跨域访问,方便前端调用
- 💾 缓存优化 - 智能缓存策略,提升访问速度
- 📱 响应式界面 - 提供美观的展示界面
# 获取随机图片
curl "https://your-domain.com/api/img?img=random"
# 或
curl "https://your-domain.com/api/img?img=r"API 会在响应头中返回以下信息:
| 响应头 | 说明 |
|---|---|
X-Image-Path |
图片在仓库中的路径 |
X-Page |
页面目录 (page1-page10) |
X-Sub-Dir |
子目录编号 (1-20) |
X-Image-Number |
图片编号 |
X-Max-Images |
该目录下的最大图片数 |
X-Proxy-Url |
代理的源图片地址 |
// 获取随机图片
async function getRandomImage() {
try {
const response = await fetch("/api/img?img=random");
// 获取图片信息
const imageInfo = {
path: response.headers.get("X-Image-Path"),
page: response.headers.get("X-Page"),
subDir: response.headers.get("X-Sub-Dir"),
imageNumber: response.headers.get("X-Image-Number"),
maxImages: response.headers.get("X-Max-Images"),
};
// 创建图片 URL
const blob = await response.blob();
const imageUrl = URL.createObjectURL(blob);
// 显示图片
const img = document.createElement("img");
img.src = imageUrl;
document.body.appendChild(img);
console.log("图片信息:", imageInfo);
} catch (error) {
console.error("获取图片失败:", error);
}
}<!-- 直接在 img 标签中使用 -->
<img
src="/api/img?img=random"
alt="随机图片" />
<!-- 或者作为背景图片 -->
<div style="background-image: url('/api/img?img=random');"></div>eo-img-api/
├── functions/
│ └── api/
│ └── img/
│ └── index.js # EdgeOne Pages Function
├── index.html # 展示界面
└── README.md # 项目说明
-
创建 Pages 项目
# 克隆项目 git clone <your-repo-url> cd eo-img-api
-
配置 Functions
- 将
functions/api/img/index.js部署为 EdgeOne Pages Function - 函数会自动绑定到
/api/img路径
- 将
-
配置域名
- 在 EdgeOne 控制台绑定自定义域名
- 配置 HTTPS 证书
# 启动本地服务器
npx serve .
# 或使用 Python
python -m http.server 8000在 functions/api/img/index.js 中的 CONFIG 对象定义了每个目录的图片数量:
var CONFIG = {
imageCount: {
page1: {
1: 38, // page1/1 目录下有 38 张图片
2: 40, // page1/2 目录下有 40 张图片
// ...
},
// ...
},
};- 将图片上传到对应的目录结构
- 更新
CONFIG中对应目录的图片数量 - 重新部署 Function
获取图片或显示帮助信息
参数:
img- 图片类型random或r: 获取随机图片
响应:
- 成功: 返回图片数据 (image/jpeg)
- 失败: 返回错误信息 (text/plain)
状态码:
200: 成功404: 图片不存在500: 服务器内部错误
欢迎提交 Issue 和 Pull Request!
- Fork 本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
MIT License - 详见 LICENSE 文件
- EdgeOne Pages Functions 提供强大的边缘计算能力
- cnb.cool 提供图片存储
- 图片资源来源于开源项目
💡 提示: 如果遇到问题,请查看 Issues 或创建新的 Issue。