1.前言
网上其实可以搜到很多关于随机图片的Api,但是很多已经年代久远、速度缓慢,或者是分类不全不太符合口味,所以选择自建一个,图片都是自己挑选的,不喜欢也可以更换,方便维护。
有能网络条件的可以直接使用Github完成搭建,完全免费。
2.实现步骤
①建立图片API,首先就得有图片,数量风格都可以自选,在这里推荐几个免费的图库——
wallhaven.cc、Pixbay、 Pexels
②把图片保持到本地后,文件名大多都是乱的,最好统一一下名称,排个序号,方便日后删除更换,在这里建议把图片格式转为webp形式,可以有效提升加载时间。这边不建议使用太大的图片,因为在读取的时候会加载图片,一般图片10M左右已经要加载很久,所以我们需要压缩图片。可以选择TinyPNG实现,非会员支持最大5M和20张的图片处理,可以有效压缩图片大小且不会产出肉眼可见的影响。
③接着可以把图片上传到云存储或者网站空间,比如Github、Gitee和各大云厂商。
3.以 1.webp 图片为例
最终地址为(地址仅做为范例参考):
TXT 代码:
https://cdn.jsdelivr.net/gh/dogsking/randompicturePC/images/1.webp
④以此类推,获取剩下图片的URl,然后保存到TXT文本里:
TXT 代码:
https://cdn.jsdelivr.net/gh/dogsking/randompicturePC/images/1.webp
https://cdn.jsdelivr.net/gh/dogsking/randompicturePC/images/2.webp
https://cdn.jsdelivr.net/gh/dogsking/randompicturePC/images/3.webp
https://cdn.jsdelivr.net/gh/dogsking/randompicturePC/images/4.webp
https://cdn.jsdelivr.net/gh/dogsking/randompicturePC/images/5.webp
https://cdn.jsdelivr.net/gh/dogsking/randompicturePC/images/6.webp
如果是使用某些云存储平台的直接使用图片的URL就可以了。
⑤把TXT文件放在云存储或者网站任意目录下,注意要跟下文中的PHP文件要放在同一级目录
比如同时放在……/Random/Photo/img.txt和……/Random/Photo/img.php
如果嫌麻烦,也可以用python自动输出解决:
python 代码:
# 作者:六月是只猫
# 链接(URL):https://lyszm.com
#适用于序号编排的图片如1.png、2.png……
filename="D:\\文档\\imgs.txt" /*输出目录及文件名*/
randimgs=open(filename,"a")
for numbers in range(1,20): /*输出序号,这里是从1输出到20*/
randimgs.write("https://cdn.jsdelivr.net/gh/dogsking/randompicturePC/images/"+str(numbers)+".webp\n") /*修改此处的图片地址*/
randimgs.close()
⑤最后使用随机获取图片链接输出的PHP:
php 代码:
<?php
//此php和保存链接的txt文件放在同一目录下
$filename = "img.txt"; /*保存链接的txt文件名*/
if(!file_exists($filename)){
die('文件不存在');
}
//从文本获取链接
$pics = [];
$fs = fopen($filename, "r");
while(!feof($fs)){
$line=trim(fgets($fs));
if($line!=''){
array_push($pics, $line);
}
}
//从数组随机获取链接
$pic = $pics[array_rand($pics)];
//返回指定格式
$type=$_GET['type'];
switch($type){
//JSON返回
case 'json':
header('Content-type:text/json');
die(json_encode(['pic'=>$pic]));
default:
die(header("Location: $pic"));
}
?>
⑥在需要使用php文件的地方填入文件路径就可以访问这个随机图片php,即可调取图片输出。