搭建随机图片api

搭建随机图片api

随机图片API,主要原理其实很简单,就三步:

1.用一个文本文档存放图片的链接

2.当用户请求API时,php就去读取txt文件,
3.然后生成随机数来随机选取一个图片链接

当然还有一种是读取文件夹里图片 然后随机输出一张图片

先说一下读取文件夹里的图片方法

首先在服务器网站根目录 新建图片文件夹,如images,里面放入图片。

新建如images.php。如果更改文件夹名字  需要在代码第10行images/改为你的图片目录文件夹。12行也是

php文件里面放入以下代码

<?php
header('Cache-Control:no-cache,must-revalidate');
header('Pragma:no-cache');
header("Expires:0");
header("Access-Control-Allow-Origin:*");
//处理请求输出数据
//这将得到一个文件夹中的所有gif,jpg和png图片的数组
$rand=rand(0,1);
if($rand){
    $localurl="images/*.{gif,jpg,png}";
}else{
    $localurl="images/*.{gif,jpg,png}";
}
$img_array=glob($localurl,GLOB_BRACE);
//从数组中选择一个随机图片 
$img=array_rand($img_array);
$imgurl=$img_array[$img];
$https=isset($_GET["https"])?$_GET["https"]:1;
if($https == "true"){
    $imgurl='https://'.$_SERVER['SERVER_NAME'].'/'.$imgurl;
}else{
    $imgurl='http://'.$_SERVER['SERVER_NAME'].'/'.$imgurl;
}
if(isset($_GET["type"])?$_GET["type"]:1=="json"){
    $rTotal='0';
    $gTotal='0';
    $bTotal='0';
    $total='0';
    $imageInfo = getimagesize($img_array[$img]);
    //图片类型
    $imgType = strtolower(substr(image_type_to_extension($imageInfo[2]), 1));
    //对应函数
    $imageFun = 'imagecreatefrom' . ($imgType == 'jpg' ? 'jpeg' : $imgType);
    $i = $imageFun($img_array[$img]);
    //测试图片,自己定义一个,注意路径
    for($x=0;
    $x<imagesx($i);
    $x++){
        for($y=0;
        $y<imagesy($i);
        $y++){
            $rgb=imagecolorat($i,$x,$y);
            $r=($rgb>>16)&0xFF;
            $g=($rgb>>8)&0xFF;
            $b=$rgb&0xFF;
            $rTotal+=$r;
            $gTotal+=$g;
            $bTotal+=$b;
            $total++;
        }
    }
    $rAverage=round($rTotal/$total);
    $gAverage=round($gTotal/$total);
    $bAverage=round($bTotal/$total);
    $arr=array('ImgUrl'=>$imgurl,'Color'=>"$rAverage,$gAverage,$bAverage");
    echo json_encode($arr);
    exit();
}
//在页面显示图片地址

//echo $imgurl;
header("location:$imgurl");

然后访问 域名/images.php即可

现在说一下第二种

新建一个images.txt文件 和images. php文件

txt文件里面用来放外部连接 一行一个

php文件放入以下代码

<?php

//存有链接的文件名,这里是存放图片链接的txt文件
$filename = "images.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"));
}

将images.txt和images.php放在同一个网站目录下,通过访问域名/images.php即可

本人搭建的可以点击查看

THE END
喜欢就支持一下吧
点赞8赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容