(对,我知道有很多人写过类似的文章了,但我还是想写一遍
大部分的人都用的别人的随机图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:*');
}
}
?>
Comments NOTHING