⊙∀⊙!

随机图片api


avatar
zatusgyo 2024-10-01 86

随机图片api网站

1.樱花二次元图片API-Dmoe:https://www.dmoe.cc/

示例


2.夏沫博客:https://cdn.seovx.com/

示例


3.保罗 API:https://api.paugram.com/

示例


4.岁月小筑:https://img.xjh.me/

示例


5.东方Project随机图片API:https://img.paulzzh.com/

示例


6.缙哥哥博客:https://api.dujin.org/

示例


7.栗次元API:https://t.alcy.cc/

示例


8.LoliAPI:https://www.loliapi.com/

示例


9.likepoems随机图:https://api.likepoems.com/

示例


10.zatu的自建API:https://api.zatusgyo.top/

示例


11.樱道(已失效):https://api.r10086.com/
12.小歪(已失效):https://api.ixiaowai.cn/
13.墨天逸(已失效):https://api.mtyqx.cn/

自建API

如何自建?

<?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!=''){
        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"));
}
?>

转自likepoems

由于需要一个一个写入链接,有些麻烦,所以进行了调整:

<?php
// 定义图片文件夹路径和缓存文件路径
$imagesDir = 'img/';
$cacheFile = 'img.txt';

// 检查并更新缓存文件
if (shouldUpdateCache($imagesDir, $cacheFile)) {
    updateCacheFile($imagesDir, $cacheFile);
}

// 从缓存文件中获取图片链接
$pics = readCacheFile($cacheFile);

// 检查是否有图片链接
if (empty($pics)) {
    die('没有图片链接');
}

// 从数组中随机获取链接
$pic = $pics[array_rand($pics)];

// 根据请求参数返回指定格式
$type = isset($_GET['type']) ? $_GET['type'] : 'default';

switch ($type) {
    // JSON返回
    case 'json':
        header('Content-Type: application/json');
        die(json_encode(['pic' => $pic]));

    // 默认返回重定向
    default:
        header("Location: $pic");
        exit;
}
   //缓存文件的时间戳检查
function shouldUpdateCache($imagesDir, $cacheFile)
{
    if (!file_exists($cacheFile)) {
        return true;
    }

    $cacheTime = filemtime($cacheFile);
    foreach (glob($imagesDir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE) as $image) {
        if (filemtime($image) > $cacheTime) {
            return true;
        }
    }

    return false;
}

function updateCacheFile($imagesDir, $cacheFile)
{
    // 获取文件夹中的所有图片文件名
    $images = glob($imagesDir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
    // 检查是否有图片
    if (empty($images)) {
        throw new Exception('没有找到任何图片');
    }
    // 构建图片的完整URL
    $baseUrl = 'http://' . $_SERVER['HTTP_HOST'] . '/';
    $imageUrls = array_map(function($image) use ($baseUrl) {
        return $baseUrl . ltrim($image, '/');
    }, $images);

    // 写入缓存文件
    file_put_contents($cacheFile, implode(PHP_EOL, $imageUrls));
}

function readCacheFile($cacheFile)
{
    // 检查文件是否存在
    if (!file_exists($cacheFile)) {
        throw new Exception('缓存文件不存在');
    }

    // 读取文件内容
    $lines = file($cacheFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

    // 检查是否有图片链接
    if (empty($lines)) {
        throw new Exception('缓存文件中没有图片链接');
    }

    return $lines;
}
?>

或者使用我最开始使用的:

<?php
// 图片存放目录
$image_directory = 'pathto/pe/';
// 缓存文件路径
$cache_directory = 'pathto/cache';
$cache_file = $cache_directory . '/image_cache.txt';
// 检查缓存目录是否存在,如果不存在则创建
if (!file_exists($cache_directory)) {
    mkdir($cache_directory, 0775, true);
}
// 检查缓存文件是否存在并读取图片列表
if (file_exists($cache_file)) {
    $files = unserialize(file_get_contents($cache_file));
} else {
    // 获取目录下的所有图片文件
    $files = glob($image_directory . '*.{jpg,jpeg,png,gif,webp}', GLOB_BRACE);
    // 将图片列表序列化并写入缓存文件
    file_put_contents($cache_file, serialize($files));
}
// 检查是否有图片文件
if (!empty($files)) {
    // 随机选择一个图片文件
    $random_image = $files[array_rand($files)];

    // 获取图片文件名
    $image_name = basename($random_image);

    // 构造图片的完整URL
    $image_url = '你的url路径' . $image_name;

    // 发送302重定向响应
    header("Cache-Control: no-cache, no-store, must-revalidate");
    header("Pragma: no-cache");
    header("Expires: 0");
    header("Location: $image_url", true, 302);
    exit;
} else {
    echo "No images found.";
}
?>

暂无评论

发表评论