一、引入 & API是什么?
API(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而无需访问源码,或理解内部工作机制的细节。通过API,即使不知道如何操作,也能将产品或服务与其他产品或服务进行互通。API可以简化应用开发,节省时间和成本。API由一个或多个方法组成,每个方法可以实现一个功能,比如发送消息、上传文件、检索消息等。
API可以按照不同的分类方式进行划分:
- 本地API:为操作系统或者框架提供的接口,如Windows API供Windows应用程序使用。
- 远程API:允许在网络的不同端点之间进行远程调用,如远程过程调用RPC。
- 库或框架API:由软件库或框架提供,供开发者在特定的语境下使用,如jQuery的API。
API的应用场景包括但不限于:
- Web开发:在Web开发中,API用于不同系统之间的数据交换和功能调用。
- 移动应用开发:通过API实现不同平台之间的数据同步和功能集成。
- 物联网(IoT):在物联网中,设备通过API进行数据交换和控制。
二、利用PHP搭建随机图片API接口
随机图片API,就是通过访问一个链接实现每一次访问获得随机的一张图片。如常见的就有随机必应图片,随机动漫图片等等,但是当我们想要把随机图片API作为博客文章头图或者网站背景时,有时候会发现一些公开API的图片大小并不符合,而且小概率会出现比较难看的图片,质量不能保证,所以我们可以自己搭建随机图片API。
第一种,外链版
这种外链版可以将图片托管在(如DCloud、阿里云、腾讯云等)图床里面,响应速度会比较快。
代码如下:
<?php
$txt ="储存图片链接的txt外链"; //读取远程txt;//是否存在
if(file_get contents($txt)){
$data = file($txt); //将文件存放在一个数组中;
$num = count($data); //条数;
$id = mt_rand(0,$num-1); //随机数字;
$url = chop($data[$id]); //显示第几行数据,并去除空格;
header("location:$url");
}
?>
第二种,本地版
这一种API所获得的随机图片全部存放在服务器目录下,随机图片响应速度与服务器性能有直接关系。
新建一个index.php文件,将下方代码复制进去,创建一个 images文件夹,将图片放入即可。
代码如下:
<?php
header('Cache-Control:no-cache,must-revalidate');
header('Pragma:no-cache');
header("Expires:0");
header("Access-Control-Allow-Origin:*");
//处理请求输出数据
//这将得到一个文件夹中的所有gif,jpg和png图片的数组
$rand=rand(0,1);
if($rand){
$localurl="images/*.{gif,jpg,png}";
}else{
$localurl="images/*.{gif,jpg,png}";
}
$img_array=glob($localurl,GLOB_BRACE);
//从数组中选择一个随机图片
$img=array_rand($img_array);
$imgurl=$img_array[$img];
$https=isset($_GET["https"])?$_GET["https"]:1;
if($https == "true"){
$imgurl='https://'.$_SERVER['SERVER_NAME'].'/api/'.$imgurl;
}else{
$imgurl='http://'.$_SERVER['SERVER_NAME'].'/api/'.$imgurl;
}
if(isset($_GET["type"])?$_GET["type"]:1=="json"){
$rTotal='0';
$gTotal='0';
$bTotal='0';
$total='0';
$imageInfo = getimagesize($img_array[$img]);
//图片类型
$imgType = strtolower(substr(image_type_to_extension($imageInfo[2]), 1));
//对应函数
$imageFun = 'imagecreatefrom' . ($imgType == 'jpg' ? 'jpeg' : $imgType);
$i = $imageFun($img_array[$img]);
//测试图片,自己定义一个,注意路径
for($x=0;
$x<imagesx($i);
$x++){
for($y=0;
$y<imagesy($i);
$y++){
$rgb=imagecolorat($i,$x,$y);
$r=($rgb>>16)&0xFF;
$g=($rgb>>8)&0xFF;
$b=$rgb&0xFF;
$rTotal+=$r;
$gTotal+=$g;
$bTotal+=$b;
$total++;
}
}
$rAverage=round($rTotal/$total);
$gAverage=round($gTotal/$total);
$bAverage=round($bTotal/$total);
$arr=array('ImgUrl'=>$imgurl,'Color'=>"$rAverage,$gAverage,$bAverage");
echo json_encode($arr);
exit();
}
//在页面显示图片地址
//echo $imgurl;
header("location:$imgurl");
?>
2 条评论
随机图片的运用挺广泛的 用好了 也会给人一亮的感觉
是的呢