Loading... # 随机图片API > **顾名思义,就是通过访问一个链接实现每一次访问获得随机的一张图片,如常见的就有随机必应图片,随机动漫图片等等,但是当我们想要把随机图片API作为博客文章头图或者网站背景时,有时候会发现一些公开API的图片大小并不符合,而且小概率会出现比较难看的图片,质量不能保证,所以学会自己搭建随机图API是很有必要的。** ## 第一种-外链版 **这一种API所获得的随机图片是通过外链方式获取,而图片原图储存在一些高速图床或者自己的云储存桶上的。** **新建api.php文件,将下方代码复制进去,添加自己的图片外链txt文件外链或者将txt文件放在同一目录下改为文件名.txt,另外,txt中的图片链接格式应为一行一个。** ``` <?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"); ?> ``` 最后修改:2024 年 12 月 23 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏 本文作者: 肆佬 文章标题:自建随机图片API的两种方式 本文地址:https://trii.cn/index.php/archives/78/ 版权说明:若无注明,本文皆肆佬科技站原创,转载请保留文章出处。