【vps】教你写一个属于自己的随机图API
【vps】教你写一个自己的随机图API
前言
刚刚开始使用halo博客的时候,我就发现halo博客系统是可以使用随机图当背景的,所以也是使用了网上一些比较火的随机图API。
在上次发现了各种图片API接口之后,我发现这些接口都是使用随机图的原理的,然后大部分的随机图都是二次元浓度过高,自己是有点受不了的,所以准备自己写一个随机图的API接口。正好最近的vps备案成功了,就写一个API网页吧。
1、寻找图片
这一步肯定是不用多说的,自己就是因为嫌弃以前使用的api二次元浓度太高了,所以想自己找一些好看的图片来当随机图。那么从哪里找图片呢?我这里有几个推荐的好看的壁纸网站,都是免费下载的
当然,还有很多的地方可以找到好看的图片,就比如我最近刷短视频的时候,就会经常给我推荐好看的壁纸
2、压缩图片
我们都知道,如果一张图片的大小太大,那么网页打开时加载时间就会比较长,这个样子就会有网页打开了,但是图片未加载完全的情况出现。
那么如何避免这种情况的出现呢,我们可以使用一些图片压缩工具,这里推荐使用在线的图片压缩网站TinyPNG
这个网站的压缩率非常的高,使用的图片压缩算法基本上可以达到70%左右的压缩了,这已经是高得离谱了。
3、上传图片
在压缩图片完成之后,就到了我们的上传图片的时间了
然后我上传图片使用的是github+jsdelivr图床来上传的。
最后的上传效果就是图片地址为
https://cdn.jsdelivr.net/gh/{你的github用户名}/{仓库名称}/{具体路径}
那么这边使用的图床插件是PicGo,配置好之后的样子长这样

那么上传图片的问题解决了
4、创建API
api怎么创建呢?
首先第一步,我们打开vps的宝塔面板,如果没安装的推荐安装一个,因为这个对建站小白来说非常的方便。
我们参加一个API站点

然后申请一个ssl认证,再打开强制https
然后打开这个站点的目录,创建一个img.txt和一个random.php

我们在img.txt中将我们上传的图片的url写在里面,效果如图所示

这里提一点,如何一件复制你上传图片的url呢,如果你使用的是PicGo上传的话,可以在“相册”一栏里,选择你想要的图片,然后一件复制url
然后我们在random.php中写下这段代码
<?php
//存有image链接的文件名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"));
}
?>
到此大功告成!我们的随机图API就做好了!
我们只需要访问这个API链接(random.php)就可以立即跳转到我们img.txt中的随机一张图片的地址啦!
后话
那么到此自己的随机图API就做好啦
这里也是附上自己的随机图API接口
【vps】教你写一个属于自己的随机图API的更多相关文章
- 只有20行Javascript代码!手把手教你写一个页面模板引擎
http://www.toobug.net/article/how_to_design_front_end_template_engine.html http://barretlee.com/webs ...
- 半个小时教你写一个装(bi)逼(she)之地图搜租房
半个小时教你写一个装(bi)逼(she)之地图搜租房 首先需要一个Python3环境,怎么准备我就不多说了,实在不会的出门右转看一下廖雪峰老师的博客. HTML部分 代码来自:高德API+Python ...
- 教你写一个Android可快速复用的小键盘输入控件
引子 在Android项目开发中特别是一些稍大型的项目,面对需求文档的时候你经常会发现很多地方用到了同样的组件,但是又略有不同.比如这个: 右边是一个小键盘输入板,左边当焦点不同的时候分别用右边的小键 ...
- 手把手教你写一个java的orm(五)
生成sql:where 上一篇里我们实现了生成insert的sql,下面要开始实现update,delete,select的sql语句了.但是这些语句有一个比较麻烦的地方是:它们一般后面都会有wher ...
- 手把手教你写一个java的orm(一)
写之前的说明 其实吧. 这个东西已经写好了,地址在:https://github.com/hjx601496320/JdbcPlus 这系列文章算是我写的过程的总结吧.(恩系列,说明我可能会写好久,╮ ...
- 手把手教你写一个RPC
1.1 RPC 是什么 定义:RPC(Remote Procedure Call Protocol)--远程过程调用协议 ,RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数 ...
- 80行代码教你写一个Webpack插件并发布到npm
1. 前言 最近在学习 Webpack 相关的原理,以前只知道 Webpack 的配置方法,但并不知道其内部流程,经过一轮的学习,感觉获益良多,为了巩固学习的内容,我决定尝试自己动手写一个插件. 这个 ...
- 让我手把手教你写一个强大、方便使用的 IOC 容器
一.介绍 1.介绍 最近无聊,也没什么事做,没事做总是要给自己找点事情做吧,毕竟人的生活在与折腾.于是,决定自己手动写一个 IOC 的框架.我们知道在 NetCore 的版本里面已经内置了 IOC 容 ...
- 手把手教你写一个RN小程序!
时间过得真快,眨眼已经快3年了! 1.我的第一个App 还记得我14年初写的第一个iOS小程序,当时是给别人写的一个单机的相册,也是我开发的第一个完整的app,虽然功能挺少,但是耐不住心中的激动啊,现 ...
随机推荐
- JAVA使用IDEA本地调试服务的代码
然后将启动参数的 jdwp=transport=dt_socket,server=y,suspend=n,address=8086 放到服务器上 在执行jar包的命令加入这个 例如 java -jar ...
- windows系统中远程登录ubuntu18服务器的桌面
下载:http://www.c-nergy.be/products.html 也可以直接服务器里 wget https://www.c-nergy.be/downloads/xRDP/xrdp-ins ...
- 【LeetCode】1079. Letter Tile Possibilities 解题报告 (C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 回溯 日期 题目地址:https://leetcode ...
- 【九度OJ】题目1181:遍历链表 解题报告
[九度OJ]题目1181:遍历链表 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1181 题目描述: 建立一个升序链表并遍历输出. ...
- 【LeetCode】680. Valid Palindrome II 验证回文字符串 Ⅱ(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 双指针 思路来源 初版方案 进阶方案 日期 题目地址 ...
- 【LeetCode】893. Groups of Special-Equivalent Strings 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- Sum Of Gcd(hdu 4676)
Sum Of Gcd Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...
- Codeforces 450C:Jzzhu and Chocolate(贪心)
C. Jzzhu and Chocolate time limit per test: 1 seconds memory limit per test: 256 megabytes input: st ...
- Codeforces 777B:Game of Credit Cards(贪心)
After the fourth season Sherlock and Moriary have realized the whole foolishness of the battle betwe ...
- 阿里云视觉智能开放平台的人脸1:N搜索的开源替代-Java版(文末赋开源地址)
一.人脸检测相关概念 人脸检测(Face Detection)是检测出图像中人脸所在位置的一项技术,是人脸智能分析应用的核心组成部分,也是最基础的部分.人脸检测方法现在多种多样,常用的技术或工具大 ...