调用别人的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
可以大概写一个主界面。用来分类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文件
将图床内图片的链接,分行导入
完成后保存即可
直接访问:子域名/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 #方法二