随机图片API,就是通过访问一个链接实现每一次访问获得随机的一张图片,如常见的就有随机必应图片,随机动漫图片等等,但是当我们想要把随机图片API作为博客文章头图或者网站背景时,有时候会发现一些公开API的图片大小并不符合,而且小概率会出现比较难看的图片,质量不能保证,所以学会自己搭建随机图API是很有必要的。
第一种外链版
<?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"); ?>