
很多网站、博客、导航页、个人主页和 APP 都需要图片资源。
比如:首页背景图、登录页背景图、每日壁纸、博客文章封面、APP 启动页、小程序背景图、管理后台欢迎页、桌面壁纸工具。
如果所有图片都靠自己上传和维护,时间成本会比较高。尤其是想让页面每天都有新鲜感时,手动换图并不是一个长期可维护的方案。
随机壁纸 API 就是为这类场景准备的。
它可以通过接口快速返回壁纸图片,让网站或应用自动获取图片资源,实现随机展示、每日切换、分类展示等效果。
接口文档地址:
https://apizero.cn/marketplace/wallpaper
一、随机壁纸API是什么
随机壁纸 API 是一个用于获取壁纸图片资源的接口。
它通常可以通过 GET 请求调用,返回一张随机图片,或者返回图片地址、图片信息、分类结果等数据。
对于开发者来说,最常见的使用方式有两种:
text
方式一:直接把接口地址作为图片地址使用
text
方式二:后端请求接口,拿到图片地址后再返回给前端
第一种方式简单,适合个人项目、博客背景、静态页面。
第二种方式更灵活,适合正式业务系统,可以增加缓存、日志、分类控制和兜底图片。
二、随机壁纸API适合哪些场景
随机壁纸接口的应用场景非常广。
| 场景 | 使用方式 |
|---|---|
| 个人主页 | 每次刷新展示不同背景图 |
| 博客系统 | 自动生成文章封面图 |
| 登录页面 | 随机展示高清背景 |
| 管理后台 | 欢迎页展示每日壁纸 |
| APP启动页 | 获取远程壁纸作为启动背景 |
| 小程序页面 | 动态展示背景图 |
| 桌面工具 | 每日更换桌面壁纸 |
| 导航网站 | 增强首页视觉效果 |
只要项目中需要图片展示,都可以考虑接入随机壁纸 API。
三、为什么不建议把所有图片写死
很多项目初期会直接把图片地址写在代码里。
例如:
html
<img src="/static/banner.jpg" />
这种方式虽然简单,但后期会遇到几个问题。
1. 图片内容单一
用户每次访问看到的都是同一张图,页面缺少变化。
2. 维护成本高
想换图时需要上传图片、修改路径、重新部署,流程比较麻烦。
3. 占用服务器存储
如果自己保存大量高清壁纸,会占用服务器空间和带宽。
4. 不方便多端复用
网站、APP、小程序如果都需要图片资源,单独维护会比较混乱。
使用随机壁纸 API 后,图片资源可以通过接口统一获取,前端和后端都能复用。
四、接口请求方式
随机壁纸接口通常使用 GET 请求。
接口地址:
text
https://apizero.cn/marketplace/wallpaper
常见请求示例:
text
GET https://apizero.cn/marketplace/wallpaper
如果接口支持参数,也可以根据业务传入分类、尺寸、格式等条件。
常见参数设计如下:
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| type | string | 否 | 壁纸分类,例如风景、动漫、科技 |
| size | string | 否 | 图片尺寸,例如 1920x1080 |
| format | string | 否 | 返回格式,例如 image、json |
| device | string | 否 | 设备类型,例如 pc、mobile |
| refresh | number | 否 | 是否强制刷新随机结果 |
实际接入时,以接口文档中的参数说明为准。
五、直接在HTML中使用
如果接口返回的是图片内容,可以直接作为 img 标签地址使用。
html
<img src="https://apizero.cn/marketplace/wallpaper" alt="随机壁纸" />
也可以作为页面背景图:
html
<div class="wallpaper-box"></div>
<style>
.wallpaper-box {
width: 100%;
height: 100vh;
background-image: url("https://apizero.cn/marketplace/wallpaper");
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}
</style>
这种方式适合个人主页、静态页面和简单展示项目。
六、在前端项目中使用
在 Vue 项目中,可以把壁纸地址绑定到背景样式。
vue
<template>
<div class="page" :style="{ backgroundImage: `url(${wallpaperUrl})` }">
<div class="content">
<h1>欢迎回来</h1>
<p>每天换一张背景图,让页面更有新鲜感。</p>
</div>
</div>
</template>
<script setup>
import { ref } from "vue";
const wallpaperUrl = ref("https://apizero.cn/marketplace/wallpaper");
</script>
<style scoped>
.page {
min-height: 100vh;
background-size: cover;
background-position: center;
}
.content {
padding: 80px;
color: #fff;
}
</style>
在 React 项目中也很简单:
jsx
export default function WallpaperPage() {
const wallpaperUrl = "https://apizero.cn/marketplace/wallpaper";
return (
<div
style={{
minHeight: "100vh",
backgroundImage: `url(${wallpaperUrl})`,
backgroundSize: "cover",
backgroundPosition: "center"
}}
>
<h1>随机壁纸页面</h1>
</div>
);
}
七、JavaScript调用示例
如果接口返回 JSON,可以使用 fetch 请求。
javascript
async function getWallpaper() {
const url = "https://apizero.cn/marketplace/wallpaper";
try {
const response = await fetch(url);
const data = await response.json();
console.log(data);
return data;
} catch (error) {
console.error("获取随机壁纸失败", error);
return null;
}
}
getWallpaper();
如果接口直接返回图片,则可以直接更新图片地址:
javascript
function refreshWallpaper() {
const img = document.getElementById("wallpaper");
img.src = "https://apizero.cn/marketplace/wallpaper?t=" + Date.now();
}
增加时间戳可以避免浏览器缓存导致图片不刷新。
八、Python接入示例
后端项目可以使用 Python 请求接口,并把图片地址或图片内容返回给前端。
python
import requests
def get_wallpaper():
url = "https://apizero.cn/marketplace/wallpaper"
try:
response = requests.get(url, timeout=10)
return {
"code": response.status_code,
"content_type": response.headers.get("Content-Type"),
"data": response.text
}
except requests.exceptions.Timeout:
return {
"code": 504,
"msg": "随机壁纸接口请求超时"
}
except Exception as e:
return {
"code": 500,
"msg": str(e)
}
result = get_wallpaper()
print(result)
如果接口直接返回图片二进制,可以保存到本地:
python
import requests
url = "https://apizero.cn/marketplace/wallpaper"
response = requests.get(url, timeout=10)
with open("wallpaper.jpg", "wb") as f:
f.write(response.content)
九、Java接入示例
Java 项目可以使用 OkHttp 调用接口。
java
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class WallpaperApiDemo {
public static void main(String[] args) throws Exception {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://apizero.cn/marketplace/wallpaper")
.get()
.build();
Response response = client.newCall(request).execute();
if (response.body() != null) {
System.out.println(response.body().string());
}
}
}
如果用于 Spring Boot 项目,可以封装成一个壁纸服务。
java
@Service
public class WallpaperService {
public String getRandomWallpaper() {
// 这里可以封装HTTP请求、缓存、异常处理和默认图片逻辑
return "wallpaper result";
}
}
十、Node.js接入示例
Node.js 可以使用 axios 调用。
javascript
const axios = require("axios");
async function getWallpaper() {
const url = "https://apizero.cn/marketplace/wallpaper";
try {
const response = await axios.get(url, {
timeout: 10000
});
return response.data;
} catch (error) {
return {
code: 500,
msg: "随机壁纸接口调用失败",
error: error.message
};
}
}
getWallpaper().then(console.log);
如果接口返回图片地址,可以把结果透传给前端;如果返回图片流,可以使用 responseType: "arraybuffer" 处理。
javascript
const response = await axios.get("https://apizero.cn/marketplace/wallpaper", {
responseType: "arraybuffer"
});
十一、PHP接入示例
PHP 可以使用 curl 请求接口。
php
<?php
$url = "https://apizero.cn/marketplace/wallpaper";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$response = curl_exec($ch);
if (curl_errno($ch)) {
echo curl_error($ch);
} else {
echo $response;
}
curl_close($ch);
如果要在页面中直接展示,可以这样写:
php
<img src="https://apizero.cn/marketplace/wallpaper" alt="随机壁纸">
十二、在博客系统中如何使用
博客系统经常需要文章封面图。
如果每篇文章都手动找图,会比较耗时。可以在发布文章时调用随机壁纸 API,自动生成默认封面。
推荐流程:
text
用户发布文章
↓
判断是否上传封面
↓
如果没有封面,调用随机壁纸API
↓
保存图片地址
↓
文章列表展示封面
伪代码示例:
python
def publish_article(title, content, cover=None):
if not cover:
cover = get_random_wallpaper_url()
article = {
"title": title,
"content": content,
"cover": cover
}
save_article(article)
return article
这样可以提升文章列表的视觉效果,也能降低作者发布成本。
十三、在登录页中如何使用
登录页是随机壁纸 API 很适合落地的地方。
一个简单的登录页,如果背景图做得好,整体质感会提升很多。
示例结构:
html
<div class="login-page">
<div class="login-card">
<h2>欢迎登录</h2>
<input placeholder="请输入账号" />
<input placeholder="请输入密码" />
<button>登录</button>
</div>
</div>
CSS:
css
.login-page {
min-height: 100vh;
background-image: url("https://apizero.cn/marketplace/wallpaper");
background-size: cover;
background-position: center;
display: flex;
align-items: center;
justify-content: center;
}
.login-card {
width: 360px;
padding: 32px;
border-radius: 16px;
background: rgba(255, 255, 255, 0.82);
backdrop-filter: blur(12px);
}
这种做法适合 SaaS 登录页、后台管理系统、个人工具站和内部系统入口页。
十四、在APP中如何使用
移动端 APP 可以把随机壁纸用于启动页、发现页、个人中心背景、每日推荐页和主题皮肤页。
不过 APP 接入时要注意性能。
建议做法:
text
APP启动
↓
读取本地缓存壁纸
↓
后台请求新的壁纸
↓
下载成功后更新缓存
↓
下次启动展示新壁纸
这样可以避免每次启动都等待网络请求。
十五、缓存策略建议
随机壁纸虽然可以每次请求都换图,但正式项目中不建议完全不加缓存。
1. 前端缓存
适合个人主页、博客、简单页面。
可以通过 localStorage 记录当天图片:
javascript
function getTodayKey() {
return new Date().toISOString().slice(0, 10);
}
const today = getTodayKey();
const cache = JSON.parse(localStorage.getItem("wallpaper_cache") || "{}");
if (cache.date === today && cache.url) {
document.body.style.backgroundImage = `url(${cache.url})`;
} else {
const url = "https://apizero.cn/marketplace/wallpaper?t=" + Date.now();
localStorage.setItem("wallpaper_cache", JSON.stringify({
date: today,
url
}));
document.body.style.backgroundImage = `url(${url})`;
}
2. 后端缓存
适合正式业务。
可以按小时或按天缓存图片结果:
text
请求壁纸
↓
检查Redis缓存
↓
缓存存在:直接返回
↓
缓存不存在:请求随机壁纸API
↓
写入缓存
↓
返回结果
3. CDN缓存
如果图片访问量较大,可以结合 CDN 缓存,减少源站压力。
十六、兜底图片方案
任何远程接口都可能出现超时、网络波动或返回异常。
所以接入随机壁纸 API 时,一定要准备默认图片。
推荐策略:
text
优先使用接口返回图片
接口失败时使用本地默认图
图片加载失败时切换备用图
前端可以这样处理:
html
<img
src="https://apizero.cn/marketplace/wallpaper"
onerror="this.src='/static/default-wallpaper.jpg'"
alt="随机壁纸"
/>
背景图也可以提前准备默认样式,避免白屏。
十七、数据库表设计建议
如果项目需要记录壁纸使用历史,可以设计一张表。
sql
CREATE TABLE wallpaper_log (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
biz_type VARCHAR(50) NOT NULL COMMENT '业务类型,如login、blog、app',
image_url VARCHAR(500) DEFAULT NULL COMMENT '图片地址',
image_type VARCHAR(50) DEFAULT NULL COMMENT '图片分类',
use_scene VARCHAR(100) DEFAULT NULL COMMENT '使用场景',
status VARCHAR(20) DEFAULT 'success' COMMENT '调用状态',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
如果壁纸接口返回图片标题、作者、来源等信息,也可以增加字段:
sql
ALTER TABLE wallpaper_log
ADD COLUMN title VARCHAR(255) DEFAULT NULL COMMENT '图片标题',
ADD COLUMN source VARCHAR(255) DEFAULT NULL COMMENT '图片来源';
有了日志后,可以分析哪些页面调用最多、哪些分类更受欢迎、是否存在接口失败、图片是否加载正常、缓存策略是否合理。
十八、接入随机壁纸API的注意事项
1. 注意图片加载速度
高清图片通常体积较大,建议开启懒加载、压缩或 CDN 加速。
2. 移动端注意流量
移动端不要频繁刷新高清图,建议缓存当天图片。
3. 准备默认背景图
接口异常时使用本地默认图,避免页面空白。
4. 不要在高并发页面无缓存调用
如果首页访问量较大,建议后端缓存结果,不要每次访问都请求接口。
5. 注意页面可读性
背景图太花会影响文字阅读,建议增加遮罩层。
css
.page::before {
content: "";
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.35);
}
十九、随机壁纸API的价值总结
随机壁纸 API 的核心价值不是"获取一张图片"这么简单。
它可以帮助项目快速完成视觉升级:
- 让首页不再单调
- 让登录页更有设计感
- 让博客封面自动生成
- 让 APP 页面更有新鲜感
- 减少手动找图和维护图片的成本
- 提升用户第一次打开页面的观感
对于个人开发者、小团队、工具站、博客系统和轻量级 APP 来说,随机壁纸接口是一个成本低、见效快的美化方案。
二十、总结
随机壁纸 API 很适合用在需要图片氛围感的项目中。
推荐接入思路是:
text
简单页面:直接使用接口作为图片地址
正式项目:后端请求接口并增加缓存
移动端:本地缓存当天壁纸
高并发页面:配合Redis或CDN缓存
异常情况:准备默认兜底图片
通过随机壁纸 API,可以让网站、APP、小程序和博客系统快速获得更好的视觉表现。
接口文档地址: