FurAPI 图片接口文档
接口概述
FurAPI 提供了灵活的图片访问接口,支持随机获取图片、分类获取以及指定图片访问。所有接口均支持返回JSON格式数据。
示例
接口列表
api基础地址
https://img.furapi.top
1.1 随机获取所有图片
接口地址: /api
请求方式: GET
描述: 从所有图片中随机返回一张图片
示例:
- 直接访问图片:
https://img.furapi.top/api - 获取JSON格式:
https://img.furapi.top/api?json=1
JSON响应示例:
{
"name": "example.jpg",
"size": 224251,
"uploadtime": "2025-06-01 02:34:51",
"path": "/api/example.jpg",
"processingTime": 2
}
1.2 随机获取指定目录图片
接口地址: /api/{目录名}
请求方式: GET
描述: 从指定目录中随机返回一张图片
示例:
- 直接访问图片:
https://img.furapi.top/api/furry - 获取JSON格式:
https://img.furapi.top/api/furry?json=1
JSON响应示例:
{
"name": "random_image.jpg",
"size": 356789,
"uploadtime": "2025-05-28 14:22:10",
"path": "/api/furry/random_image.jpg",
"processingTime": 3
}
1.3 获取指定图片
接口地址: /api/{目录名}/{图片名}
请求方式: GET
描述: 直接访问指定目录下的指定图片
示例:
- 直接访问图片:
https://img.furapi.top/api/furry/fox.jpg - 获取JSON格式:
https://img.furapi.top/api/furry/fox.jpg?json=1
JSON响应示例:
{
"name": "fox.jpg",
"size": 182456,
"uploadtime": "2025-05-15 09:15:33",
"path": "/api/furry/fox.jpg",
"processingTime": 1
}
1.4 获取文件列表
接口地址: /list.json
请求方式: GET
描述: 获取所有可用的图片目录和文件列表
示例:
- 访问地址:
https://img.furapi.top/list.json
JSON响应示例:
"code": 200,
"categories": [
{
"_root": {
"810F68CEF6527EA78A4A201CA8293919.png": "2025-05-28 22:39:12",
"B7D09439CD390C6C9E0764057C3A901E.jpg": "2025-06-19 18:52:37",
"E8186C0A390401605329B26551D3EDC1.jpg": "2025-06-19 22:22:06",
"QQ20250524-010001.png": "2025-05-24 01:00:08",
"QQ20250524-010025.png": "2025-05-24 01:00:27",
"QQ20250601-023253.png": "2025-06-01 02:32:57",
"QQ20250601-023446.png": "2025-06-01 02:34:51",
"QQ20250601-023929.png": "2025-06-01 02:39:33",
"QQ20250601-041824.png": "2025-06-01 04:18:27",
"QQ20250602-005904.png": "2025-06-02 00:59:07",
"QQ20250602-015211.png": "2025-06-02 01:52:13",
"QQ20250602-020642.png": "2025-06-02 02:06:44"
}
],
"total_images": 350
}
使用示例
<!-- 随机显示一张图片 -->
<img src="https://img.furapi.top/api" alt="随机图片">
<!-- 显示furry目录的随机图片 -->
<img src="https://img.furapi.top/api/furry" alt="Furry图片">
<!-- 显示指定图片 -->
<img src="https://img.furapi.top/api/furry/fox.jpg" alt="狐狸图片">
<!-- HTML部分 -->
<div id="imageContainer">
<img id="randomImage" src="" alt="点击按钮获取图片" style="max-width: 500px;">
<div id="imageInfo"></div>
</div>
<button onclick="getRandomImage()">获取随机图片</button>
<button onclick="getFurryImage()">获取Furry图片</button>
<button onclick="getImageInfo()">获取图片信息(JSON)</button>
<script>
// 获取随机图片
function getRandomImage() {
const img = document.getElementById('randomImage');
// 添加时间戳避免缓存
img.src = 'https://img.furapi.top/api?' + new Date().getTime();
}
// 获取指定目录图片
function getFurryImage() {
const img = document.getElementById('randomImage');
img.src = 'https://img.furapi.top/api/furry?' + new Date().getTime();
}
// 获取图片JSON信息
function getImageInfo() {
fetch('https://img.furapi.top/api?json=1')
.then(response => response.json())
.then(data => {
// 显示图片
document.getElementById('randomImage').src = 'https://img.furapi.top' + data.path;
// 显示图片信息
const info = `
<p>文件名: ${data.name}</p>
<p>文件大小: ${(data.size / 1024).toFixed(2)} KB</p>
<p>上传时间: ${data.uploadtime}</p>
<p>路径: ${data.path}</p>
<p>处理时间: ${data.processingTime}ms</p>
`;
document.getElementById('imageInfo').innerHTML = info;
})
.catch(error => {
console.error('获取失败:', error);
alert('获取图片信息失败');
});
}
</script>
<template>
<div>
<img :src="imageUrl" v-if="imageUrl" style="max-width: 500px;">
<div v-if="imageData">
<p>文件名: {{ imageData.name }}</p>
<p>大小: {{ (imageData.size / 1024).toFixed(2) }} KB</p>
<p>上传时间: {{ imageData.uploadtime }}</p>
</div>
<button @click="getRandomImage">获取随机图片</button>
<button @click="getImageWithInfo">获取图片及信息</button>
</div>
</template>
<script>
export default {
data() {
return {
imageUrl: '',
imageData: null
}
},
methods: {
getRandomImage() {
this.imageUrl = `https://img.furapi.top/api?t=${Date.now()}`;
this.imageData = null;
},
async getImageWithInfo() {
try {
const response = await fetch('https://img.furapi.top/api?json=1');
const data = await response.json();
this.imageData = data;
this.imageUrl = `https://img.furapi.top${data.path}`;
} catch (error) {
console.error('获取失败:', error);
}
}
}
}
</script>
import React, { useState } from 'react';
function ImageGallery() {
const [imageUrl, setImageUrl] = useState('');
const [imageInfo, setImageInfo] = useState(null);
const [loading, setLoading] = useState(false);
const getRandomImage = () => {
setImageUrl(`https://img.furapi.top/api?t=${Date.now()}`);
setImageInfo(null);
};
const getImageWithInfo = async () => {
setLoading(true);
try {
const response = await fetch('https://img.furapi.top/api?json=1');
const data = await response.json();
setImageInfo(data);
setImageUrl(`https://img.furapi.top${data.path}`);
} catch (error) {
console.error('获取失败:', error);
} finally {
setLoading(false);
}
};
return (
<div>
{imageUrl && <img src={imageUrl} alt="Random" style={{maxWidth: '500px'}} />}
{imageInfo && (
<div>
<p>文件名: {imageInfo.name}</p>
<p>大小: {(imageInfo.size / 1024).toFixed(2)} KB</p>
<p>上传时间: {imageInfo.uploadtime}</p>
<p>处理时间: {imageInfo.processingTime}ms</p>
</div>
)}
<button onClick={getRandomImage}>获取随机图片</button>
<button onClick={getImageWithInfo} disabled={loading}>
{loading ? '加载中...' : '获取图片及信息'}
</button>
</div>
);
}
export default ImageGallery;
JavaScript中使用
// 获取随机图片的JSON数据
fetch('https://img.furapi.top/api?json=1')
.then(response => response.json())
.then(data => {
console.log('图片名称:', data.name);
console.log('文件大小:', data.size);
console.log('上传时间:', data.uploadtime);
console.log('图片路径:', data.path);
console.log('处理时间:', data.processingTime + 'ms');
// 使用返回的路径显示图片
document.getElementById('myImage').src = 'https://img.furapi.top' + data.path;
});
// 异步函数示例
async function fetchRandomImage() {
try {
const response = await fetch('https://img.furapi.top/api/furry?json=1');
const data = await response.json();
// 创建图片元素
const img = new Image();
img.src = 'https://img.furapi.top' + data.path;
img.onload = () => {
console.log(`图片 ${data.name} 加载成功`);
console.log(`图片大小: ${(data.size / 1024).toFixed(2)} KB`);
};
return data;
} catch (error) {
console.error('获取图片失败:', error);
}
}
// 获取文件列表
fetch('https://img.furapi.top/list.json')
.then(response => response.json())
.then(data => {
console.log('可用目录:', data.categories);
});
import requests
import json
# 获取随机图片信息
response = requests.get('https://img.furapi.top/api?json=1')
data = response.json()
print(f"图片名称: {data['name']}")
print(f"文件大小: {data['size'] / 1024:.2f} KB")
print(f"上传时间: {data['uploadtime']}")
print(f"图片路径: {data['path']}")
print(f"处理时间: {data['processingTime']}ms")
# 下载图片
image_url = f"https://img.furapi.top{data['path']}"
img_response = requests.get(image_url)
if img_response.status_code == 200:
with open(data['name'], 'wb') as f:
f.write(img_response.content)
print(f"图片已保存为: {data['name']}")
# 获取指定目录的随机图片
response = requests.get('https://img.furapi.top/api/furry?json=1')
data = response.json()
print(f"Furry图片: {data['name']}")
# 批量获取图片
import time
def get_multiple_images(count=5, category=''):
images = []
for i in range(count):
url = f'https://img.furapi.top/api/{category}?json=1' if category else 'https://img.furapi.top/api?json=1'
response = requests.get(url)
if response.status_code == 200:
images.append(response.json())
time.sleep(0.5) # 避免请求过快
return images
# 获取5张随机图片信息
random_images = get_multiple_images(5)
for img in random_images:
print(f"- {img['name']} ({img['size'] / 1024:.2f} KB)")
<!-- HTML -->
<div id="gallery">
<img id="displayImage" src="" style="max-width: 500px; display: none;">
<div id="loading" style="display: none;">加载中...</div>
<div id="imageDetails"></div>
</div>
<button id="btnRandom">随机图片</button>
<button id="btnFurry">Furry图片</button>
<button id="btnWithInfo">获取详细信息</button>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function() {
// 随机图片按钮
$('#btnRandom').click(function() {
$('#displayImage')
.attr('src', 'https://img.furapi.top/api?' + Date.now())
.show();
$('#imageDetails').empty();
});
// Furry图片按钮
$('#btnFurry').click(function() {
$('#displayImage')
.attr('src', 'https://img.furapi.top/api/furry?' + Date.now())
.show();
$('#imageDetails').empty();
});
// 获取详细信息按钮
$('#btnWithInfo').click(function() {
$('#loading').show();
$.ajax({
url: 'https://img.furapi.top/api?json=1',
method: 'GET',
success: function(data) {
$('#displayImage')
.attr('src', 'https://img.furapi.top' + data.path)
.show();
const details = `
<h4>图片信息:</h4>
<ul>
<li>文件名:${data.name}</li>
<li>大小:${(data.size / 1024).toFixed(2)} KB</li>
<li>上传时间:${data.uploadtime}</li>
<li>路径:${data.path}</li>
<li>加载耗时:${data.processingTime}ms</li>
</ul>
`;
$('#imageDetails').html(details);
},
error: function(xhr, status, error) {
alert('获取失败: ' + error);
},
complete: function() {
$('#loading').hide();
}
});
});
});
</script>
注意事项
- 所有接口均支持HTTPS协议
- 图片格式支持:jpg, jpeg, png, gif, webp
- 建议在生产环境中添加错误处理机制
- 请合理使用API,避免频繁请求造成服务器压力
- 如需大量使用,请联系管理员获取更高的请求配额
错误码说明
| 错误码 | 说明 |
|---|---|
| 200 | 请求成功 |
| 404 | 图片或目录不存在 |
| 500 | 服务器内部错误 |