前言:在美化我的博客时候,封面一直是个大问题,其他人的API自己不喜欢,今天就教大家自建一个外部随机图API。

整体步骤:

  1. 找到自己喜欢的图片,这里我用的网站是https://wallhaven.cc/
  2. 自建GIthub图库。
  3. 通过PicGo上传到GitHub,输出加速后的图片地址
  4. 部署到服务器中

OK,理论存在,实践开始!!

 1.搭建图床

  1. 先创建一个Github仓库

这里我仓库名称用的是photo repository,你也可以是其他名字,选公开,注意!!勾选“Add a README file”

 

2.生成一个 Token

  1. 点击用户头像 -> 选择 setting
  2. 点击Developer settings
  3. 点击Personal access tokens
  4. 点击Generate new token
  5. 填写Token描述,勾选repo然后点击Generate token生成一个Token,只需勾选repo
  6. 获取Token,注意这个 Token 只会显示一次,自己先保存下来,或者等后面配置好 PicGo 后再关闭此网页

配置 PicGo 并使用 jsdelivr 作为 CDN 加速

  1. 前往下载PicGo
  2. 设定仓库名:按照用户名/图床仓库名 的格式填写

设定分支名:main

设定 Token:粘贴之前生成的Token

指定存储路径:填写想要储存的路径,如 img/,这样就会在仓库下创建一个名为img的文件夹,图片将会储存在此文件夹中

设定自定义域名:它的的作用是,在图片上传后,PicGo 会按照自定义域名+上传的图片名的方式生成访问链接,放到粘贴板上,因为我们要使用 jsDelivr 加速访问,所以可以设置为cdn.jsdelivr.net/gh/用户名/图床仓库名@分支 #默认是main

现在图床搭建完毕,开始配置随机图片

  1. 新建一个img.txt和random.php
  2. 把jsDelivr 加速后的图片链接复制下来
  3. 一行一个配置random.php
  4. 源码
    <?php
    //存有美图链接的文件名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"));
    }
    ?>
    
     
  5. 把img.txt和random.php放到你的网站服务器的目录下,你的域名/random.php即可访问

到这里,今天的教程就到此结束了,GoodBye!!