Skip to content

zzrliu8421/OnePic-API

Repository files navigation

OnePic API

基于边缘计算的随机图片API服务,部署在EdgeOne Pages平台。

项目链接:https://pic.api.sylv.top

OnePic API

项目简介

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 接口处理

快速开始

1. 准备图片

将图片放入以下目录:

images/
├── pc/    # 电脑端图片
└── pe/    # 移动端图片

2. 图片格式转换

使用ImageMagick将图片转换为WebP格式:

# Windows系统运行
convert_images_fixed.bat

# 或手动转换
magick input.jpg -quality 85 output.webp

3. 部署到EdgeOne Pages

  1. 推送代码到Git仓库
  2. 在EdgeOne Pages创建站点并关联仓库
  3. 设置构建配置:
    • 构建命令:npm run build
    • 输出目录:dist
    • Node版本:18.20.4
  4. 触发构建,等待部署完成

API 文档

接口列表

接口 描述 方法
/api 获取随机图片(JSON/重定向/文本) GET
/image 直接重定向到随机图片 GET

GET /api

获取随机图片,支持多种返回格式。

请求参数

参数 类型 必填 默认值 说明
count 整数 1 返回图片数量,范围1-50
type 字符串 自动检测 设备类型:pcpe
format 字符串 webp 图片格式,当前仅支持 webp
return 字符串 json 返回类型:jsonredirecttext

返回类型

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

GET /image

直接重定向到一张随机图片,无需参数。

使用示例

# 获取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 /image

设备检测

API会自动检测客户端设备类型:

  • 检测到移动设备(Android、iOS等)时返回 pe 类型图片
  • 其他情况返回 pc 类型图片

也可通过 type 参数手动指定。

构建说明

运行构建命令:

npm run build

构建过程会:

  1. 清理 dist 目录
  2. 复制图片文件到 dist/converted/
  3. 扫描图片文件列表并嵌入到边缘函数代码
  4. 生成包含API文档的首页

技术栈

  • 运行时: EdgeOne Pages 边缘函数
  • 构建工具: Node.js
  • 图片格式: WebP
  • 部署平台: 腾讯云 EdgeOne Pages

环境要求

  • Node.js 18.x 或更高版本
  • ImageMagick(用于图片转换,可选)
  • Git仓库(用于部署)

许可证

MIT License

About

OnePic-API 基于边缘计算的随机图片API服务,部署在EdgeOne Pages平台。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors