Init
在Sakurairo主题中,可以设置随机封面图片的api地址。
初始时就设定好了两个api链接,分别适配pc端和移动端的封面大小。
每次在浏览器打开上面的链接,都会随机返回一张图片。不过,与之前 随机句子的直接返回显示方式不同,这个api是每次访问会自动调转到某一图片链接,即使不断刷新,显示的还是同一张图片。从地址栏可以发现访问的链接的地址已经从(xxx.php
)变成了图片的链接地址(xxx.webp
)。
- 示例:
错误示例:直接显示
参考来源/转载自:CSDN 「海拥✘」
思路:
(1)准备图片放入文件夹中。(示例:网站/random/imagesapi/pcbg文件夹)
(2)同路径下新建index.php
文件(示例:网站/random/imagesapi/index.php),,使得访问该路径时就能默认访问index.php
。
(3)编写index.php
,使其随机显示一张文件夹中的图片。
(4)上传以上文件到网站服务器,通过访问到路径即可。(示例:https://www.georgewahson.club/random/imagesapi/)
index.php
代码解释:- 图片文件夹路径:
$imageFolder = 'image/';
- 获取图片文件列表:
$imageFiles = scandir($imageFolder);
- 过滤掉"
.
"和"..
"目录:$imageFiles = array_diff($imageFiles, array('..', '.'));
- 随机选择一张图片:
$randomImage = $imageFiles[array_rand($imageFiles)];
- 图片显示:
echo '<img src="' . $imageFolder . $randomImage . '" alt="随机图片">';
完整代码:
<!DOCTYPE html>
<html>
<head>
<title>随机调用图片</title>
</head>
<body>
<?php
// 图片文件夹路径
$imageFolder = 'image/';
// 获取图片文件列表
$imageFiles = scandir($imageFolder);
// 过滤掉"."和".."目录
$imageFiles = array_diff($imageFiles, array('..', '.'));
// 随机选择一张图片
$randomImage = $imageFiles[array_rand($imageFiles)];
// 图片显示
echo '<img src="' . $imageFolder . $randomImage . '" alt="随机图片">';
?>
</body>
</html>
虽说我不懂PHP
,但多少能看得出来,上面的HTML
标签使得整个窗口显示被返回的图片。用来替换Sakurairo主题封面的外部api是无效的。(起码从前者访问后地址不变,后者访问后地址发生了变化上也能够看出)
那假如去掉html标签呢( doge),笑死,效果是一样的。index.php
代码中的echo
就决定了这图片是被显示出来的。
正确方式:跳转链接
以下回答来自 百度文心一言
提问:
需求:现有一个images文件夹,内有照片若干1.jpg
,2.jpg
等等,通过网页 www.test.com/images/1.jpg
即可在线访问照片中的照片,请你编写pc.php
文件,通过访问 www.test.com/pc.php
即可随机跳转到某一个图片的链接。请注意,是实现链接的跳转至 www.test.com/images/x.jpg
,而不是返回图片。
回答:
你可以使用PHP
的rand()
函数来随机生成一个图片文件名,并将其添加到你的图片文件夹的URL
后面。以下是一个简单的示例:
<?php
$images = glob('images/*.jpg'); // 获取images文件夹下所有的.jpg文件
if(count($images) > 0) {
$randomImage = $images[array_rand($images)]; // 随机选择一个图片
header('Location: http://www.test.com/images/' . $randomImage); // 跳转到随机图片的URL
} else {
echo '没有找到任何图片';
}
?>
这个脚本首先获取images
文件夹下的所有.jpg
文件,然后从数组中随机选择一个元素。然后,它使用PHP
的header()
函数将用户的浏览器重定向到随机选择的图片URL
。
请注意,此脚本假设你的图片文件都在"images"
文件夹中,且所有的图片文件都是.jpg
格式。如果你的情况不同,那么你可能需要修改脚本以适应你的环境。
还要注意的是,因为header()
函数需要在输出任何内容之前使用,所以如果你在你的脚本中已经有了一些输出(例如在脚本的开头部分),那么你可能会遇到问题。为了避免这种问题,你可以将这段代码放在你的脚本的顶部,或者在任何可能产生输出的地方使用ob_start()
函数。
此时,将通过访问该php文件(点我试试)即可实现和主题默认api同样的功能。唯一不同的是示例代码中给的是jpg
这一单一图片格式。(其实大部分情况下,用做图片背景的图片一般格式都是一致的,如统一使用webp
。)但,如果非要使用不同格式的图片,那么把代码第二行中的.jpg
改为*
即可:
$images = glob('pcbg/*');
附录
同一个问题,我也一字不差的问了 阿里通义千问进行比较。结果非常差劲,一眼就能看出来它给的代码有问题。即使重新生成重新提问也是一样。
Comments NOTHING