基于边缘计算的随机图片API服务,部署在EdgeOne Pages平台。
OnePic API 是一个轻量级的随机图片服务,利用EdgeOne Pages的边缘函数实现,支持WebP图片格式,自动适配PC端和移动端设备。
- WebP格式: 采用现代WebP图片格式,体积小、质量高
- 设备适配: 自动检测客户端设备类型,返回PC端或移动端图片
- 随机返回: 从图片池中随机选择图片,保证多样性
- 多返回格式: 支持JSON响应、图片重定向、纯文本链接
- 边缘计算: 基于EdgeOne Pages边缘函数,全球节点就近响应
- 零延迟缓存: 图片列表构建时嵌入,运行时零额外请求
- 轻量架构: 无需后端服务器,纯静态资源+边缘函数
- 简单部署: 推送到Git仓库即可自动构建部署
onepic-api/
├── build.js # 构建脚本
├── package.json # 项目配置
├── edgeone.json # EdgeOne Pages配置
├── convert_images_fixed.bat # 图片转换脚本(Windows)
├── README.md # 项目文档
├── DEPLOY.md # 部署文档
├── .gitignore # Git忽略配置
├── images/ # 原始图片目录
│ ├── pc/ # PC端原始图片
│ └── pe/ # 移动端原始图片
├── converted/ # 转换后图片目录
│ ├── pc/webp/ # PC端WebP图片
│ └── pe/webp/ # 移动端WebP图片
└── edge-functions/ # 边缘函数目录
├── api/index.js # /api 接口处理
└── image/index.js # /image 接口处理
将图片放入以下目录:
images/
├── pc/ # 电脑端图片
└── pe/ # 移动端图片
使用ImageMagick将图片转换为WebP格式:
# Windows系统运行
convert_images_fixed.bat
# 或手动转换
magick input.jpg -quality 85 output.webp- 推送代码到Git仓库
- 在EdgeOne Pages创建站点并关联仓库
- 设置构建配置:
- 构建命令:
npm run build - 输出目录:
dist - Node版本:
18.20.4
- 构建命令:
- 触发构建,等待部署完成
| 接口 | 描述 | 方法 |
|---|---|---|
/api |
获取随机图片(JSON/重定向/文本) | GET |
/image |
直接重定向到随机图片 | GET |
获取随机图片,支持多种返回格式。
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
count |
整数 | 否 | 1 | 返回图片数量,范围1-50 |
type |
字符串 | 否 | 自动检测 | 设备类型:pc 或 pe |
format |
字符串 | 否 | webp | 图片格式,当前仅支持 webp |
return |
字符串 | 否 | json | 返回类型:json、redirect、text |
JSON响应 (return=json)
{
"success": true,
"count": 2,
"type": "pc",
"format": "webp",
"images": [
{
"url": "https://example.com/converted/pc/webp/xxx.webp",
"format": "webp",
"type": "pc"
},
{
"url": "https://example.com/converted/pc/webp/yyy.webp",
"format": "webp",
"type": "pc"
}
]
}重定向 (return=redirect)
直接302重定向到图片URL,适用于count=1。
纯文本 (return=text)
每行一个图片URL,适用于批量获取链接。
https://example.com/converted/pc/webp/xxx.webp
https://example.com/converted/pc/webp/yyy.webp
直接重定向到一张随机图片,无需参数。
# 获取1张随机图片(JSON)
GET /api
# 获取10张随机图片
GET /api?count=10
# 获取移动端图片
GET /api?type=pe
# 获取5张移动端图片
GET /api?type=pe&count=5
# 直接重定向到图片
GET /api?count=1&return=redirect
# 获取纯文本链接
GET /api?count=10&return=text
# 直接获取随机图片(重定向)
GET /imageAPI会自动检测客户端设备类型:
- 检测到移动设备(Android、iOS等)时返回
pe类型图片 - 其他情况返回
pc类型图片
也可通过 type 参数手动指定。
运行构建命令:
npm run build构建过程会:
- 清理
dist目录 - 复制图片文件到
dist/converted/ - 扫描图片文件列表并嵌入到边缘函数代码
- 生成包含API文档的首页
- 运行时: EdgeOne Pages 边缘函数
- 构建工具: Node.js
- 图片格式: WebP
- 部署平台: 腾讯云 EdgeOne Pages
- Node.js 18.x 或更高版本
- ImageMagick(用于图片转换,可选)
- Git仓库(用于部署)
MIT License