php实现随机图功能

  • 准备

    与第一个类似,但是我们除了需要准备 txt 文件之外,还有准备好需要展示的图片。当然你也可以使用网络图片,看自己需求。

    源代码

    • 网络图片按星期几显示
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php
    $origin = filter_input(INPUT_SERVER, 'HTTP_ORIGIN') ?? '';
    $allow_origin = array(
    'http://网址',
    'https://网址',
    );
    if (in_array($origin, $allow_origin)) {
    header('Access-Control-Allow-Origin: ' . $origin);
    }
    $file = "./lib/avatar.txt";
    $avatarUrl = "http://网址/images/avatar.jpg";
    if (file_exists($file)) {
    $data = file($file);
    $avatarUrl = $data[date("w", time())]; // 获取星期几
    }
    return header("Location: " . $avatarUrl); // 非直接输出图片,重定向到图片地址,节省性能。
    • 本地图片随机模式
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    /**
    * 直接输出图片,稍微耗费性能。
    */
    function showImg($imgUrl) {
    $imgInfo = imagecreatefrompng($imgUrl);
    $imgWidth = imagesx($imgInfo);
    $imgHeight = imagesy($imgInfo);
    $simg = imagecreatetruecolor($imgWidth, $imgHeight);
    $bg = imagecolorallocatealpha($simg, 0, 0, 0, 127);
    imagefill($simg, 0, 0, $bg);
    imagesavealpha($simg, true);
    imagecopyresized($simg, $imgInfo, 0, 0, 0, 0, $imgWidth, $imgHeight, $imgWidth, $imgHeight);
    header("Content-Type: image/png");
    imagepng($simg);
    imagedestroy($imgInfo);
    imagedestroy($simg);
    }
    $origin = filter_input(INPUT_SERVER, 'HTTP_ORIGIN') ?? '';
    $allow_origin = array(
    'http://网址',
    'https://网址',
    );
    if (in_array($origin, $allow_origin)) {
    header('Access-Control-Allow-Origin: ' . $origin);
    }
    return showImg('./images/' . mt_rand(1, 50) . '.png'); // 使用本地图片,不需要 txt,准备一个文件夹存放图片即可。