使用php自制一个图片API接口

有时候我们需要获得一些随机图片,如果用别人的api接口,可能接口不太稳定,也可能别人的图片不符合你的审美,这时候我们就需要自制一个简易的图片api接口了,下面我介绍两种方法制作属于自己的api图片接口~

文章参考来自梦独吟

所有源码可以在github上下载,顺便点个star吧~

第一种


方法很简单,我们新建一个php文件,插入下面的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
//存有链接的文件名,这里是存放图片链接的txt文件
$filename = "文件名.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"));
}

接下来,我们新建一个txt文件,在每一行(注意是每行)插入一条图片的url链接

1
2
https://image.datealive.top/images/2020/05/13/timg-1.jpg
https://image.datealive.top/images/2020/05/13/timg-2.jpg

最后,我们把两个文件上传到服务器上,通过访问php文件即可,注意是同一目录下!!

演示demo:

传送门


第二种

基于jsDeliver +github的图片api接口

参考于Toomey 这位大佬,这位大大的博客非常不错哦~~


方法:

1.首先你先得上传图片到你的github仓库里,这里提供两种方法上传

(1)参考这篇博客——传送门

(2)直接下载Github Desktop ,绑定你的github账号后,克隆你的仓库(注意要有README.md文件)

img

然后选择你的克隆下来的仓库,右键打开show in explorer,在里面添加图片,打开github Desktop,我们就可以看到刚刚上传的文件。我们首先在summary里输入“第一次”(或者其他),点击commit to master,最后在push即可。

img

img

img

img


2.获取图片链接

方法:这里使用的是 jsDeliver +github

首先,打开你的github仓库,找到releases

img

然后依次输入版本号,描述,最后更新releases即可

img

接下来我们引用资源即可

https://cdn.jsdelivr.net/gh/你的github用户名/你的仓库名@发布的版本号/文件名
例如: https://cdn.jsdelivr.net/gh/dateolive/images@V-2.0/images
ps:也可以不加版本号,这样会默认加载最新的版本
例如:https://cdn.jsdelivr.net/gh/dateolive/images/images


3.编写php文件

1
2
3
4
5
6
7
8
<?php

$rand = rand(1,201);
$url = 'https://cdn.jsdelivr.net/gh/dateolive/images@V-2.0/images/'.$rand.'.jpg';
$img = file_get_contents($url,true);
header("Content-Type: image/jpeg;");
echo $img;
?>

这里rand就是一个随机函数,随机产生1-100的数字,因为我上传的图片是要数字排好的,所以这样可以实现随机调用

第二行就是使用jsDeliver加载资源了,具体方法上面第二步有说明

最后是利用header函数重定向到后面的url地址,实现跳转


4.把写好的php文件上传服务器即可。

5.演示demo:

传送门http://imapi.datealive.top/tp/api.php)