python创建一个er随机图,搭建一个最简单的首页随机图片api

搭建一个最简单的首页随机图片api

1. 引言

首页的图片每天都是重样的是在是看得心烦意乱,就希望每次访问网页都能看到不一样的风景,既然是用Typora+PicGo写博客,图片通过JSDlivr全球分发(其实是心疼CDN的钱,毕竟每个月又拍云才给15G),那么我就直接通过一个简单的php实现访问GitHub中的随机图片不就能实现简单的随机图API了嘛?

说干就干,咳咳,我们理一下思路:

先找到我们需要的随机图

通过大名鼎鼎的tingpng实现压缩,毕竟图片1080P就够了,还有手机用户呢

通过PicGo上传到GitHub,输出加速后的图片地址

部署到服务器中,并通过API调用

2. 实现

dbee696465727ccc11e2a24fa2e2d7ca.png

ca0c7d8a53303cf4abfb69c2ab063048.png

图片我们已经准备好了,把这些图片上传到Tinypng,可以看到压缩率为70%,还是比较夸张的,我这里下载的图片都是1920×1080分辨率,如果分辨率不太好的话可以用OpenCV压缩一下,代码如下:

import os

import cv2

file_path = "你的文件目录"

web_path = "上传的CDN目录"

def img_resize(image_path):

image = cv2.imread(file_path+image_path)

height, width = image.shape[0], image.shape[1]

# 设置新的图片分辨率框架

width_new = 1920

height_new = 1080

# 判断图片的长宽比率

if width / height >= width_new / height_new:

img = cv2.resize(image, (width_new, int(height * width_new / width)))

else:

img = cv2.resize(image, (int(width * height_new / height), height_new))

if ".jpg" in image_path:

cv2.imwrite(file_path+image_path, img, [int(cv2.IMWRITE_JPEG_QUALITY), 100])

elif ".png" in image_path:

cv2.imwrite(file_path+image_path, img, [cv2.IMWRITE_PNG_COMPRESSION, 0])

if __name__ == '__main__':

filelist = os.listdir(file_path)

with open('目录/img.txt','w') as f:

for file in filelist:

img_resize(file)

f.write(web_path+file+'\n')

此时,img.txt中就会包含我们上传到GitHub后分发的文件地址了,格式为:https://cdn.jsdelivr.net/gh/用户名/仓库名/文件名.jpg/png,把文件保存好,后续我们需要使用。

97d3fbd0ff2cf1ca1ad41b7ab72ec578.png

已经把文件保存到img.txt文件中了,现在我们可以配置random.php文件了。

//存有美图链接的文件名img.txt

$filename = "img.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"));

}

?>

好了,接下来我们访问一下试试:

b415b0e837cd431b1702f25d4a1c42b2.png

哈哈哈哈,其实没什么问题,我们只要配置一下HTTPS证书就好了,提示的是后端不健康!

3. 总结

至此,已经全部配置完成了,访问我的个人博客https://reid.run就可以看到首页随机图都换成了赛博朋克风,一个小遗憾是忘记把水印关掉了,后续再上传的话我会注意的!

后续会写一个自动化的Python3随机api,这样的配置实在是太繁琐了~

博文的后续更新,请关注我的个人博客:星尘博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值