调用别人的API,总是会获取一些不符合我审美的图片,所以考虑自己做一个API
本教程仅供参考

准备工作

1.有一定闲置空间的服务器、域名

2.网站已经备案,或者选用国外服务器

3.宝塔面板(可选)

4.一个图床

配置图床

(如有图床可跳过此步)

GitHub+PicGo+jsDelivr

只提供思路,不提供教程
有服务器的考虑自己搭建图床!
无服务器,个人搭建可考虑 GitHub+PicGo+jsDelivr
Picgo:Github链接
具体思路是Picgo+Github 制作图床。jsDelivr给图床加速

使用他人的图床

https://tc.moyu233.xyz/   #Moyu Pic
https://7bu.top/  #去不图床
https://pic.flymc.cc/index.php  #我也不知道叫什么
https://imgurl.org/  #ImgURL 图床
https://postimages.org/  #PostImage 图床

方法一:搭建API

先将域名解析好,将网站制作出来

如果使用宝塔后台,可直接在网站页面建立,顺带可以申请一下SSL证书。打开强制HTTPS
1
可以大概写一个主界面。用来分类API(我是懒得写啦)
随后在网站根目录建立一个.php文件
这里命名为random.php
写入以下代码

<?php
//存有image链接的文件名img.txt
$filename = "img.txt";
if(!file_exists($filename)){
    die('文件不存在');
}
 
//从文本获取链接
$pics = [];
$fs = fopen($filename, "r");
while(!feof($fs)){
    $line=trim(fgets($fs));
    if($line!=''){
        array_push($pics, $line);
    }
}
 
//从数组随机获取链接
$pic = $pics[array_rand($pics)];
 
//返回指定格式
$type=$_GET['type'];
switch($type){
 
//JSON返回
case 'json':
    header('Content-type:text/json');
    die(json_encode(['pic'=>$pic]));
 
default:
    die(header("Location: $pic"));
}
?>

随后在网站根目录创建img.txt文件

将图床内图片的链接,分行导入
2

完成后保存即可

直接访问:子域名/random.php 就可以获取图片

方法二:优化办法搭建

此方法不刚需使用图床,但对服务器是刚需

具体思路是将图片存储在本地,跳过外链步骤,直接从本地调取图片

搭建API页面

此步骤请参考 方法一.搭建API 开头部分!

配置API

在网站页面下创建任意命名的php文件

这里和方法一区分,命名为img.php

然后创建一个文件夹,这里命名为moyu

在img.php写入以下代码(注意根据自己需求更改目录)

<?php
//注意将moyu改为自己的目录,并根据需求调整文件格式
$img_array = glob("moyu/*.{gif,jpg,png,webp}",GLOB_BRACE); 
$img = array_rand($img_array);
$pic = $img_array[$img];
header("Location:".$pic);
?>

随后将图片导入moyu文件夹即可

访问 域名/img.php 即可调取图片

优化管理

有图床可以实现高效管理

将图床存储路径和该方法内API调取路径统一

即可通过图床进行管理API内图片

不过只是一个简单思路,具体操作有时间我再看看(懒

省去了方法一中添加外链的管理办法,节约时间

个人随机图片API

以下是搭建成果

api.moyu233.xyz/pic.php  #方法一
api.moyu233.xyz/img.php  #方法二

Sidere mens eadem mutato