使用 PHP 搭建一个简单的随机图片 API

ruiwang 发布于 25 天前 77 次阅读


AI 摘要

想让网站每次刷新都换一张背景、头图或壁纸?无需复杂框架,只用 PHP 和几行代码,就能搭建一个支持电脑端、移动端,并可结合图床或 CDN 的随机图片 API。本文将带你从零完成配置。

随机图片 API 的作用很简单:每次访问接口时,随机返回一张图片。它可以用来制作网站随机背景、博客头图、壁纸接口等。

下面介绍一种比较简单的搭建方法。

下面的域名均为演示域名,实际搭建操作换成自己的域名

一、准备工作

在开始搭建之前,需要准备以下内容:

1.PHP

环境确保服务器已经安装 PHP,PHP 7.4、PHP 8.0 或 PHP 8.1 都可以使用。

如果使用宝塔面板,可以直接在软件商店中安装 PHP。

2.准备图片资源

将需要随机展示的图片上传到服务器或图床中。

例如,电脑端图片地址为:

https://imgres.rui26.com/pc/s1.webp
https://imgres.rui26.com/pc/s2.webp
https://imgres.rui26.com/pc/s3.webp

这里我添加到24:

https://imgres.rui26.com/pc/s24.webp

需要注意,图片编号最好保持连续,否则随机到不存在的编号时会出现 404 错误。

二、创建随机图片接口

1. 创建 PHP 文件

在网站目录中创建一个 PHP 文件,例如:

pc.php

然后写入以下代码:

<?php

// 图片最小编号
$min = 1;

// 图片最大编号
$max = 24;

// 随机生成一个图片编号
$number = random_int($min, $max);

// 拼接图片地址
$imageUrl = 'https://imgres.rui26.com/pc/s' . $number . '.webp';

// 禁止缓存接口
header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
header('Pragma: no-cache');
header('Expires: 0');

// 跳转到随机图片
header('Location: ' . $imageUrl, true, 302);

exit;

这段代码会在 1 到 24 之间随机生成一个数字,然后跳转到对应的图片地址。

例如随机到数字 8,就会跳转到:

https://imgres.rui26.com/pc/s8.webp

2. 上传 PHP 文件

pc.php 上传到网站目录中。

例如:

/www/wwwroot/api.rui26.com/pc.php

上传完成后,对应的访问地址就是:

https://api.rui26.com/pc.php

三、访问随机图片 API

在浏览器中打开接口地址:

https://api.rui26.com/pc.php

每次刷新页面,接口都会重新随机一张图片。

也可以直接在网页中调用:

随机图片

四、添加移动端随机图片接口

如果电脑端和移动端使用不同尺寸的图片,可以再创建一个:

mobile.php

写入以下代码:

<?php

// 图片数量为 24 张
$number = random_int(1, 24);

// 移动端图片地址
$imageUrl = 'https://imgres.rui26.com/mobile/s' . $number . '.webp';

// 禁止缓存
header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
header('Pragma: no-cache');
header('Expires: 0');

// 跳转到随机图片
header('Location: ' . $imageUrl, true, 302);

exit;

访问地址:

https://api.rui26.com/mobile.php

每次访问时,会随机跳转到一张移动端图片。

五、修改图片数量

如果以后增加了图片,只需要修改最大编号。

例如图片增加到了 50 张:

$number = random_int(1, 50);

同时确保图片目录中存在:

s1.webp

到:

s50.webp

否则随机到缺少的图片编号时,会出现无法访问的问题。

六、注意事项

  1. 跳转状态码建议使用 302,不要使用 301。因为 301 可能被浏览器长期缓存,导致接口一直显示同一张图片。
  2. PHP 接口不要设置长期缓存,否则随机效果可能失效。
  3. 图片文件本身可以接入 CDN 并设置缓存,这样可以减少服务器压力。
  4. 图片名称和扩展名必须保持统一,例如全部使用:
s1.webp
s2.webp
s3.webp
  1. 如果接口一直返回同一张图片,可以在调用地址后添加时间戳:
<img src="https://api.rui26.com/pc.php?t=123456">

也可以通过 JavaScript 自动生成时间戳:

<img id="randomImage" alt="随机图片">

<script>
document.getElementById('randomImage').src =
    'https://api.rui26.com/pc.php?t=' + Date.now();
</script>

七、总结

使用 PHP 搭建随机图片 API 并不复杂,主要步骤就是:

准备图片、创建 PHP 文件、随机生成编号,然后使用 302 跳转到对应的图片地址。

这种方法不需要 PHP 直接传输图片文件,图片可以通过独立图床或 CDN 加载,因此服务器压力也比较小。