Docker Compose部署随机图API

Docker Compose部署随机图API

平时我们部署博客的时候,为了考虑美观会考虑使用随机图来作为文章的封面,现在有很多大佬愿意提供随机图API,通过API我们可以很方便地部署随机图,不必自己寻找图片,考虑带宽支出

不过很多时候一些公益API访问速度很慢,其中很多图片并不是我们所想要的,这时候我们就要考虑自建随机图API了,我参考了很多教程,他们中的很多都是基于宝塔来实现的,但其实我们不必要安装宝塔面板,完全可以在Docker内实现

前置准备

首先我们先建立一个文件夹来方式我们的docker-compose和其他的随机图文件,并且进入该文件夹内:

mkdir random-pic && cd random-pic

之后上传随机图的php文件,在这里有三个版本,其中一个版本我尝试过无法使用(可能是我没有正确使用?

原理介绍

随机图的基本实现是通过新建一个站点,通过向站点发送请求,站点文件将请求重定向(301)到随机图所在图链,从而实现随机图切换:

图片准备

获取到原始图片之后,我建议你对图片继续压缩处理,常见的诸如将图片转换成webp,这能有效减小文件体积,加快用户端的加载速度,如果你使用的是对象存储或者套了CDN的话,这能减小带宽和费用压力

在这里推荐一下来自GoogleSquoosh,是一个很全能的图片压缩程序,不用下载,直接在浏览器中就可以使用:网址

基本上支持了常见图片类型的转换和压缩:

版本1(不支持桌面与移动端切换

<?php
//存放api随机图链接的文件名img.txt
$filename = "img.txt";
if(!file_exists($filename)){
   
    die('文件不存在');
}
 
//从文本获取链接
$pics = [];
$fs = fopen($filename, "r");
while(!feof($fs)){
   
    $line=trim(fgets($fs));
    if($line!='' && substr($str , 0 , 1) != '#'){
   
        array_push($pics, $line);
    }
}
 
// 从数组随机获取链接
// $pic = $pics[array_rand($pics)];
$pic = $pics[random_int(0, count($pics) - 1)]; # 真随机
 
//返回指定格式
$type=$_GET['type'];
switch($type){
   
 
//JSON返回
case 'json':
    header('Content-type:text/json');
    die(json_encode(['pic'=>$pic]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值