PHP随机图片API实现指南(带网页标题显示)

笔记
2534 0

以下是一个简单的 PHP 随机图片 API 实现,它可以在浏览器标签页显示自定义网页名称,可以从文本文件中读取图片URL列表,随机选择一张图片并返回给用户。

源代码

<?php
// 随机图片API - 完整可用版本
// 图片链接文本文件路径
$linksFile = 'image_links.txt';

// 设置网页标题
$pageTitle = "随机图片API";

// 1. 首先处理图片请求
if (isset($_GET['imageonly']) && $_GET['imageonly'] == '1') {
    // 检查文件是否存在
    if (!file_exists($linksFile)) {
        header('HTTP/1.1 404 Not Found');
        die('Image links file not found.');
    }

    // 读取文件内容到数组
    $imageUrls = file($linksFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    
    // 检查是否有可用的图片链接
    if (empty($imageUrls)) {
        header('HTTP/1.1 404 Not Found');
        die('No image URLs found in the file.');
    }

    // 随机选择一个图片URL
    $randomImageUrl = trim($imageUrls[array_rand($imageUrls)]);
    
    // 获取图片内容
    $context = stream_context_create([
        'http' => [
            'method' => 'GET',
            'header' => "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36\r\n"
        ]
    ]);
    
    $imageData = @file_get_contents($randomImageUrl, false, $context);
    
    if ($imageData === false) {
        // 如果获取失败,尝试下一个图片
        shuffle($imageUrls);
        foreach ($imageUrls as $url) {
            $url = trim($url);
            $imageData = @file_get_contents($url, false, $context);
            if ($imageData !== false) {
                $randomImageUrl = $url;
                break;
            }
        }
        
        if ($imageData === false) {
            header('HTTP/1.1 503 Service Unavailable');
            die('Could not retrieve any image.');
        }
    }

    // 根据内容自动检测MIME类型
    $finfo = new finfo(FILEINFO_MIME_TYPE);
    $mimeType = $finfo->buffer($imageData);
    
    // 设置正确的Content-Type
    header('Content-Type: ' . $mimeType);
    
    // 输出图片内容
    echo $imageData;
    exit;
}
?>
<!DOCTYPE html>
<html>
<head>
    <title><?php echo htmlspecialchars($pageTitle); ?></title>
    <meta charset="UTF-8">
    <style>
        body {
            font-family: Arial, sans-serif;
            text-align: center;
            margin: 0;
            padding: 20px;
            background-color: #f5f5f5;
        }
        .container {
            max-width: 800px;
            margin: 0 auto;
            background-color: white;
            padding: 20px;
            border-radius: 8px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
        }
        img {
            max-width: 100%;
            max-height: 70vh;
            border-radius: 4px;
            margin: 20px 0;
            border: 1px solid #ddd;
        }
        .error {
            color: red;
            padding: 20px;
            border: 1px solid #ffcccc;
            background-color: #ffeeee;
        }
        .refresh-btn {
            padding: 10px 20px;
            background-color: #4CAF50;
            color: white;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            font-size: 16px;
            margin-top: 10px;
        }
        .refresh-btn:hover {
            background-color: #45a049;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1><?php echo htmlspecialchars($pageTitle); ?></h1>
        <p>每次刷新都会显示不同的随机图片</p>
        
        <!-- 显示随机图片 -->
        <div id="imageContainer">
            <img src="?imageonly=1&rand=<?php echo uniqid(); ?>" alt="随机图片" id="randomImage" onerror="imageError()">
        </div>
        
        <div>
            <button class="refresh-btn" onclick="refreshImage()">换一张</button>
        </div>
    </div>

    <script>
        function refreshImage() {
            const img = document.getElementById('randomImage');
            img.src = "?imageonly=1&rand=" + new Date().getTime();
        }
        
        function imageError() {
            const container = document.getElementById('imageContainer');
            container.innerHTML = '<div class="error">图片加载失败,请点击按钮刷新或检查图片链接</div>' + 
                                 '<button class="refresh-btn" onclick="refreshImage()">重新尝试</button>';
        }
    </script>
</body>
</html>

功能说明

  1. 网页标题显示:浏览器标签页会显示"随机图片API"标题
  2. 两种访问模式

    • 直接访问页面:显示完整网页,包含标题和刷新按钮
    • 通过?imageonly=1参数访问:仅返回图片数据
  3. 用户友好界面

    • 显示页面标题和描述
    • 包含刷新按钮可以手动更换图片
    • 响应式设计,适配不同设备
  4. 防止缓存

    • 使用随机参数确保每次请求都是新图片
    • 可通过JavaScript手动刷新图片

使用方法

  1. 将代码保存为random-image.php
  2. 创建image_links.txt文件并添加图片URL
  3. 访问页面即可看到带标题的随机图片展示

自定义选项

  • 修改$pageTitle变量可以更改网页标题
  • 修改CSS可以调整页面样式
  • 可以添加更多页面内容,如版权信息、图片来源说明等

Github:https://github.com/imxhe/random-image

举个例子:https://022220.xyz/api/lsp

效果展示:

请输入图片描述

最后更新 2025-03-31
评论 ( 0 )
OωO
隐私评论