如何搭建一个随机图api?

白雨楠 发布于 2022-09-08 6.98k 次阅读


(对,我知道有很多人写过类似的文章了,但我还是想写一遍

大部分的人都用的别人的随机图api,但或许并不是每一张图你都会喜欢

那么,如何搭建一个属于自己的随机图api?

注:本api通过php实现,在使用之前请先配置php环境。

本文将介绍三种方案。

在开始之前我得先说明一下,把图片放上你的api之前记得先压缩(

一、引用服务器本地文件

在网站目录下创建一个php文件,一个名叫img的文件夹,并在php文件中加入以下内容。

<?php
$img_array = glob('img/*.{gif,jpg,png,jpeg,webp,bmp}', GLOB_BRACE);
if (count($img_array) == 0) {
die('没找到图片文件。请先上传一些图片到 ' . dirname(FILE) . '/img/ 文件夹');
}
header('Content-Type: image/png');
echo file_get_contents($img_array[array_rand($img_array)]);
?>

然后你只需要把图片文件扔进img文件夹即可,访问时就用域名+php文件名的形式。

例如:https://xxx.xxx/xxx.php

二、引用外部文件

1、五行解决

创建php文件的流程和上文一样,然后你只需要再在php文件中写入以下内容

<?php
$img=file('img.txt');
$url=array_rand($img);
header("Location:".$img[$url]);
?>

然后你只需要再在相同目录创建img.txt并往里面写入图片的链接即可(每行一个链接,如图

2、一个文件解决pc和pe图片分发,并解决CORS跨域问题

(注:楠酱天天被各种各样的CORS问题困扰,已经PTSD了

项目地址:Shiroiame-Kusu/Random-Image-Api-PHP: A Random Image Api Based On PHP (github.com)

对,我自己的项目,夹带点私货不过分吧

由于php文件里写了有关Access-Control-Allow-Origin的Header,所以你甚至不必在您的网页服务(如Nginx,Apache)中配置CORS相关Header。

将项目下载到本地/服务器并部署后,只需要将图片链接分别添加进image-list-desktop或者image-list-mobile即可
image-list-desktop及对应桌面端将显示的图片
image-list-mobile及对应移动端将显示的图片

希望你会喜欢!喜欢的话不要忘记给我一个star+康康其他的项目!

(注:为了照顾访问不了Github的读者,我会把主文件的源码写在下面)

<?php /*PHP判断是否是移动端*/ 
redirect();

function redirect() { 

if ( empty($_SERVER['HTTP_USER_AGENT']) ) 
{ 
    $img=file('image-list-mobile');
    $url=array_rand($img);
    header("Location:".$img[$url]);
    header('Access-Control-Allow-Origin:*');
}
elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false || 
    strpos($_SERVER['HTTP_USER_AGENT'], 'Android') !== false || 
    strpos($_SERVER['HTTP_USER_AGENT'], 'Silk/') !== false || 
    strpos($_SERVER['HTTP_USER_AGENT'], 'Kindle') !== false || 
    strpos($_SERVER['HTTP_USER_AGENT'], 'BlackBerry') !== false || 
    strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mini') !== false || 
    strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mobi') !== false ) 
{ 
    $img=file('image-list-mobile');
    $url=array_rand($img);
    header("Location:".$img[$url]);
    header('Access-Control-Allow-Origin:*'); 
    
} 
else 
{ 
    $img=file('image-list-desktop');
    $url=array_rand($img);
    header("Location:".$img[$url]);
    header('Access-Control-Allow-Origin:*');
} 

} 
?>
Spread the love
此作者没有提供个人介绍
最后更新于 2022-09-08