图床

前言

重做博客的时候,盯着Banner背景图思索良久。

想把博客打扮的漂漂亮亮的,必定少不了折腾。
Bing那颜值忽高忽低的“美图”我反正是毫无好感了,转念一想,p站的动漫风景图正合我意。

有了方向,一切都快了起来。

飞速敲开p站,果然,我想要的就在这。

当然,仅仅固定选用一张漂亮的图片做整个网站的落地背景那肯定满足不了我。

竟然这样,那就动手做一个能够随机输出漂亮图片的API,自己挖坑自己填。

准备

做好充足的准备面对失败。

找图

先从p站采集一波图片。

Picture from:Pixiv 39578544

图床

竟然要做API调用的话,首先肯定要有一个稳定的图片直链。

那么......老样子,把目光锁定在sina。

别问我为什么不直接使用p站的图片直链,P站:"别看我,强(墙)国不让。"

把刚刚采集的那套动漫背景图批量上传到sina,并且抓取了它们的链接,最后就得到了...一堆链接。

开始

万事皆项目。

API

api的话就简单的用php写了一个调用mysql随机输出数组值的小玩应。

其实最开始是想直接调用txt进行随机输出的,但是考虑到调用并发性能问题虽然我这个小破站没有多少流量我还是选择了mysql。

然后通过在响应头中添加一个 location 的头信息来重定向到随机输出数组的值,也就是图片直链地址,以达到整个API的目的。

直接上代码。

<?php
//数据库连接地址
$servername = "localhost";
//数据库用户名
$username = "xxx";
//数据库用户密码
$password = "xxx";
//数据库名
$dbname = "xxx";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 连接失败提示
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
$sqlid = "SELECT MAX(id) AS id FROM imgurl";
$sqlid = $conn->query($sqlid);
//取数据库最大ID值
$row_id=mysqli_fetch_assoc($sqlid);
//取随机数字
$id=rand(1,$row_id['id']); 
//连接数据库
$sql = "select * from imgurl where id='$id'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// 输出数据
while($row = $result->fetch_assoc()) {
header("Location:".$row["imgurl"]); 
}
} else {
echo "数组不存在 或者图片出错!";
}
?>

然后将获得的那一堆sina图片直链导入到mysql,ok,万事大吉。

![](https://img2022.cnblogs.com/blog/2073784/202204/2073784-20220412062736391-1803701684.png)


#公共服务
您也可以通过我提供的Free公共服务直接食用。

随机输出动漫风景图的API业务地址:https://api.rnm.plus/api/acimg

#结束
基本上到这整个API就已架构完成了,显然这不是什么很有技术含量的东西,好在无伤大雅。

当然,该API逻辑适用于所有需要随机输出图片的业务。


posted @ 2022-04-12 06:29  元素-  阅读(115)  评论(0)    收藏  举报