重新搭建随机图片

起因

早在几年前我就做过随机图片了,但是一段时间过去后由于服务器到期的原因导致随机图片挂了。(详见这篇文章
最近在学习k8s和docker的过程中了解到了sealos Cloud,感觉性价比非常高,于是思考起重新部署随机图片。

使用方法

可以直接在html或php中调用:

<img src=https://eguxryjyfwze.cloud.sealos.top/img.php>
<img src=https://eguxryjyfwze.cloud.sealos.top/bg.php>

或者直接前往网站体验。
效果展示:

搭建过程

之前我使用阿里云oss的过程中我感觉体验还不错,所以这次我决定将图片存储在阿里云oss上(把oss当成图床),然后在sealos Cloud上部署一个php镜像,来解析php代码。注意oss的读写权限需要是公共读(当然不能是公共读写啦~)。
首先修改阿里云提供的代码来获取每个图片的url:

from oss2.credentials import EnvironmentVariableCredentialsProvider
# 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# 填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称,例如examplebucket。
bucket = oss2.Bucket(auth, 'https://xxxx.aliyuncs.com', 'examplebucket')
lst=[]
# 列举fun文件夹下的文件与子文件夹名称,不列举子文件夹下的文件。
for obj in oss2.ObjectIterator(bucket, prefix = 'pixiv/', delimiter = '/'):
    # 通过is_prefix方法判断obj是否为文件夹。
    if obj.is_prefix():  # 判断obj为文件夹。
        print('directory: ' + obj.key)
    else:                # 判断obj为文件。
        print('file: ' + obj.key)
        url='https://xxxx.aliyuncs.com/'+obj.key+'\n'
        lst.append(url)
with open('D:\python\img.txt', mode='w') as f:
    for i in lst:
        f.write(i)

在我们得到图片的url后,我们去sealos Cloud上起一个php容器。我这里使用了php:7.4-apache镜像。Cpu核和内存调到最低够用了,我们将80端口映射到它提供的公网地址。
该镜像内需要把我们的url文件和php代码放到/var/www/html目录下。
index.php代码为:

<?php
$img=file('img.txt');
$url=array_rand($img);
header("Location:".$img[$url]);
?>
posted @ 2023-12-04 21:53  oblivionl  阅读(9)  评论(0编辑  收藏  举报