Azure API
随机图片接入文档
通过英文分类和图片池路径获取随机图片。全部、PC 和移动端三个入口返回的图片都可以自适应容器,入口差异只决定从哪些素材中随机选择。
01
核心概念
- 英文分类
- 一级图片集合,例如 zzz、wallpaper。分类名只使用小写英文字母、数字和连字符。
- 图片池入口
- 每个分类固定提供 all、pc、mobile 三个入口,不能创建第四种入口。
- 素材用途
- 后台可将图片标记为通用素材、PC 素材或移动端素材,用于决定它进入哪个定向图片池。
- 响应式显示
- 三个入口的最终图片都使用相同的 CSS 响应式规则。PC 与移动端只筛选素材方向,不限制展示尺寸。
all 不是一种素材类型。 它是汇总入口,会从该英文分类的全部启用图片中选择,包括通用、PC 和移动端素材。
02
快速开始
将随机地址直接放入 img 的 src。接口先返回 302,再由浏览器自动请求最终图片,不需要手动处理跳转。
index.html
6 LINEShtml
<div class="azure-frame">
<img
src="https://your-domain.com/zzz/all?width=1280&format=webp"
alt="随机壁纸"
/>
</div>示例中的 1280 适合约 640 CSS 像素宽的高分屏容器。普通屏幕可以选择更接近实际容器宽度的档位。
03
接口路径
推荐使用简短路径。显式 API 路径行为相同,适合需要统一管理接口前缀的客户端。
/{category}/all全部图片
该分类全部启用图片通用、PC、移动端素材都会参与随机,显示时始终自适应容器。
/{category}/pcPC 图片
仅 PC 素材优先获得横屏素材,仍可在任意尺寸容器中响应式显示。
/{category}/mobile移动端图片
仅移动端素材优先获得竖屏素材,仍会跟随容器宽高铺满显示。
简短路径
1 LINEurl
https://your-domain.com/zzz/pc显式 API 路径
1 LINEurl
https://your-domain.com/api/random/zzz/pc/{category} 是 /{category}/all 的简写;根路径 /api/random 会从全部分类中随机选择。
04
请求参数
| 字段 | 位置 | 是否必填 | 说明 |
|---|---|---|---|
| category | 路径 | 分类路径必填 | 小写英文分类,例如 zzz、anime-wallpaper。 |
| mode | 路径 | 可选 | 仅允许 all、pc、mobile;省略时等同于 all。 |
| seed | 查询参数 | 可选 | 相同分类、入口和 seed 会稳定选择同一张启用图片。 |
| width | 查询参数 | 可选 | 本地图支持 320、640、960、1280、1600 档位,请求值会向上匹配最近档位。 |
| format | 查询参数 | 可选 | 当前支持 webp,必须与 width 一起使用;外部图片链接保持源站地址。 |
完整参数示例
1 LINEurl
https://your-domain.com/zzz/pc?seed=homepage&width=1280&format=webp05
响应式显示
响应式由页面容器决定,与图片来自 all、pc 还是 mobile 无关。以下样式让图片与框体保持相同宽高,并使用 cover 裁切超出部分。
styles.css
13 LINEScss
.azure-frame {
width: 100%;
aspect-ratio: 16 / 9;
overflow: hidden;
background: #f5f5f7;
}
.azure-frame img {
display: block;
width: 100%;
height: 100%;
object-fit: cover;
}横向展示框优先调用 pc,素材构图更适合 16:9、3:2 等宽容器。
竖向展示框优先调用 mobile,素材构图更适合 9:16、3:4 等高容器。
任意展示框调用 all 获取完整图片池,再由 object-fit: cover 适配实际框体。
06
更多示例
固定到同一张图片
1 LINEurl
https://your-domain.com/zzz/all?seed=article-cover&width=1280&format=webpJavaScript 换一张
5 LINESjavascript
const image = document.querySelector("#random-image");
function refreshImage() {
image.src = `https://your-domain.com/zzz/all?width=1280&format=webp&t=${Date.now()}`;
}CSS 背景图
6 LINEScss
.hero {
min-height: 420px;
background-image: url("https://your-domain.com/zzz/pc?width=1600&format=webp");
background-position: center;
background-size: cover;
}07
缓存与性能
随机地址与最终图片使用不同的缓存策略。随机地址每次重新选图;最终本地图片可以被浏览器和代理长期缓存。
随机接口
Cache-Control: no-store避免浏览器缓存 302 结果,刷新时可以重新随机。最终本地图
immutable + ETag图片变体长期缓存;再次验证未变化时返回 304。WebP 变体
按需生成并落盘首次请求生成对应宽度,后续请求直接读取缓存文件。宽度建议
接近容器像素宽度高分屏可使用容器 CSS 宽度的约 2 倍,避免下载完整原图。08
状态码
| 状态码 | 含义 | 处理方式 |
|---|---|---|
| 302 | 随机成功 | 浏览器自动跟随 Location 加载最终图片。 |
| 304 | 图片未变化 | 继续使用浏览器缓存,无需重新传输图片内容。 |
| 400 | 请求参数错误 | 检查分类、mode、width 和 format 的取值。 |
| 404 | 图片池为空 | 确认分类存在,并为对应 PC 或移动端图片池添加启用素材。 |
| 500 | 服务内部错误 | 稍后重试,并在管理员后台检查服务与存储状态。 |
PC 或移动端图片池为空时会返回 404,不会自动回退到另一种素材;all 只要该分类仍有任意启用图片即可工作。
09
常见问题
- 只有 all 入口支持自适应吗?
- 不是。all、pc、mobile 返回的图片都可以使用同一套 width、height 和 object-fit 样式自适应容器。
- all 入口包含哪些图片?
- 包含当前英文分类下全部启用图片,不区分后台标记的通用、PC 或移动端素材用途。
- PC 图片能在手机上显示吗?
- 可以。PC 表示原始素材更适合横向构图,并不限制访问设备;最终图片仍会按照手机上的容器尺寸响应式显示。
- 为什么相同地址会出现不同图片?
- 未设置 seed 时,每次请求都会重新随机。需要稳定图片时添加固定 seed;需要主动换图时更换 seed 或附加时间参数。
管理分类、素材用途和图片池状态
进入图片库