651 字
3 分钟
两种方式实现自制随机图片API
前言
大家在使用头像API、随机背景API、随机壁纸API这类图片接口时,是不是常常为接口的稳定性和图片内容质量而烦恼?别担心,白衣这就为大家带来一个超实用教程,手把手教你轻松搭建专属自己的随机图片获取API(random image API)。
一、外链读取txt实现
1. 创建api.php文件
首先,我们需要创建一个PHP文件来处理随机图片的逻辑:
<?php// 使用__DIR__常量获取当前脚本所在目录,并拼接文件路径$filename = __DIR__. '/img.txt';if (!file_exists($filename)) { die('文件不存在');}
// 打开文件并检查是否成功$fs = fopen($filename, "r");if (!$fs) { die('无法打开文件');}
// 从文本获取链接$pics = [];while (!feof($fs)) { $line = trim(fgets($fs)); if ($line!== '') { array_push($pics, $line); }}fclose($fs);
// 从数组随机获取链接$pic = $pics[array_rand($pics)];
// 获取type参数$type = isset($_GET['type'])? $_GET['type'] : '';
switch ($type) { // JSON返回 case 'json': header('Content - type:text/json'); die(json_encode(['pic' => $pic])); default: // 验证链接是否合法 if (!filter_var($pic, FILTER_VALIDATE_URL)) { die('无效的图片链接'); } die(header("Location: $pic"));}?>2. 创建img.txt文件
接下来,我们需要创建一个文本文件来存储图片链接:
http://example.com/image1.jpghttp://example.com/image2.jpghttp://example.com/image3.jpg访问你的网址/api.php访问就可以实现了,api.php和 img.txt 理想目录是在同一目录下。如果将img.txt放于特定目录,需在api.php中修改$filename变量指定完整路径,如:
$filename = '/var/www/wwwroot/data/img.txt';二、读取本地目录实现
第二种方式更加简单,直接从本地目录中随机选择图片:
<?php$img_array = glob("images/*.{gif,jpg,png}", GLOB_BRACE);if (!empty($img_array)) { $img = array_rand($img_array); $dz = $img_array[$img]; header("Location: " . $dz); exit; // 重定向后终止脚本执行} else { echo "没有找到符合条件的图片文件。";}?>把图片丢到images文件夹下,访问api.php即可,其实就是在指定的images目录下查找gif 、jpg 、png 等格式的文件,随机选择一张并将浏览器重定向到该图片的路径进行展示。
结语
总之,第一种是外链读取方式,图片资源不需要放在本地,可以大大节省服务器空间,缺点就是你需要保证外链的有效性(ensure external link validity),当外链过多的时候,维护也是一个麻烦的事情。而第二种方式非常简单,不过图片都放在了本地目录,需要一定的空间存储支持(requires certain storage space support)。最后,相信你可以选择自己喜欢的方式去搭建自己的专属的图片API。
部分信息可能已经过时









