php直接输出随机图片的API

网上好多图片随机API的例子,今天给大家介绍一个好用的PHP直接输出随机图片的API!

php直接输出随机图片的API

演示

https://api.0513c.com/images/

简单API

 添加已下到index.php中并在该文件目录下上传图片

 glob(“./*.{gif,jpg,png}”,GLOB_BRACE);
 $img = array_rand($img_array);
 header(“location:$img_array[$img]”);
 ?>

上面这种好用,但是呢遇到被滥用的情况就会给自己的服务带来负担!所以不推荐!推荐大家使用第二种!

简单可域名授权API

和网上流出的大多API不同的是,这是实际好用且能预防滥用的API。

index.php主题程序

error_reporting(E_ERROR);
require_once '../include/common.php';
require_once 'lib/imgdata.php';
require_once 'lib/functions.php';

$karnc = new imgdata;

if ($_GET['a'] == 'local') {
    /* 列出指定目录下的图片 */
    $CONFIG = array(
        'imageManagerAllowFiles' => array(".png", ".jpg", ".jpeg", ".gif", ".bmp"),
        'imageManagerListPath' => "/background/upload/",
    );

    $host = 'http://' . $_SERVER['HTTP_HOST'];

    $allowFiles = $CONFIG['imageManagerAllowFiles'];
    $path = $CONFIG['imageManagerListPath'];

    $allowFiles = substr(str_replace(".", "|", join("", $allowFiles)), 1);

    /* 获取文件列表 */
    $path = $_SERVER['DOCUMENT_ROOT'] . (substr($path, 0, 1) == "/" ? "" : "/") . $path;
    $files = getfiles($path, $allowFiles);
    if (!count($path) || empty($files)) {
        $imgFile = 'http://api.karnc.com/background/404.jpg';
        $karnc->getdir($imgFile);
        $karnc->img2data();
        $karnc->data2img();
        die;
    }

    /* 获取指定范围的列表 */
    $len = count($files);
    for ($i = 0, $list = array(); $i < $len; $i++) {
        $list[] = $files[$i];
    }

    $rand = array_rand($list, 1);

    $img = $list[$rand];

    $imgUrl = $host . $img;

    $imgFile = $_SERVER['DOCUMENT_ROOT'] . (substr($list[$rand], 0, 1) == "/" ? "" : "/") . $img;
} else {
    //这里是从数据库中取相应图片(博主是使用树洞外链+又拍云做的)
    $img = $db_pdo->getOne("select `ming` from sd_file where quality = 1 ORDER BY RAND() limit 1");
    $host = 'https://static.karnc.com/';
    $imgFile = $imgUrl = $host . $img['ming'];
}

$refer = $_SERVER['HTTP_REFERER']; //前一URL
$karnc->getdir($imgFile);
$karnc->img2data();
$karnc->data2img();
die;

?>

imgdata.php(浏览器输出图片类)

class imgdata{
    public $imgsrc;
    public $imgdata;
    public $imgform;
    public function getdir($source){
        $this->imgsrc  = $source;
    }
    public function img2data(){
        $this->_imgfrom($this->imgsrc);
        return $this->imgdata=fopen($this->imgsrc,'rb');
    }
    public function data2img(){
        header("content-type:$this->imgform");
        return fpassthru($this->imgdata);
    }
    public function _imgfrom($imgsrc){
        $info=getimagesize($imgsrc);
        return $this->imgform = $info['mime'];
    }
}
?>

function.php(公共函数)

/**
 * 遍历获取目录下的指定类型的文件
 * @param $path
 * @param array $files
 * @return array
 */
function getfiles($path,$allowFiles,&$files = array())
{
    if (!is_dir($path)) return null;
    if(substr($path, strlen($path) - 1) != '/') $path .= '/';
    $handle = opendir($path);
    while (false !== ($file = readdir($handle))) {
        if ($file != '.' && $file != '..') {
            $path2 = $path . $file;
            if (is_dir($path2)) {
                getfiles($path2, $allowFiles, $files);
            } else {
                if (preg_match("/\.(".$allowFiles.")$/i", $file)) {
                    $files[] =substr($path2, strlen($_SERVER['DOCUMENT_ROOT']));
                }
            }
        }
    }
    return $files;
}

/**
 * 域名白名单校验
 * @param $domain_list(白名单)
 * @return true/false
 */
function checkReferer($domain_list=array('karnc.com','www.karnc.com')){
    $status=false;
    $refer=  $_SERVER['HTTP_REFERER']; //前一URLif($refer){
        $referhost=parse_url($refer);
        $host=strtolower($referhost['host']);//来源地址主域名if($host==$_SERVER['HTTP_HOST'] || in_array($host,$domain_list)){
            $status=true;
        }
    }
    return $status;
}

?>

推荐大家将function.php和imgdata.php文件合并使用

其他API搜集

$image_directory = "./uploads/2017/07/";
 //设定图片目录$image_type = array(".jpg",".gif",".png"); 
//设定图片类型header("location:$image_directory./".image_rand_output($image_directory,$image_type)."");function image_rand_output($image_directory,$image_type) 
//随机输出图片函数{ $dh = dir($image_directory); while (false !== ($image = $dh -> read())) { if(in_array(strtolower(strrchr($image,".")),$image_type)) $image_array[] = $image; } $dh -> close(); $key = array_rand($image_array); return $image_array[$key];}?>
小程序码
  • 技术宅微信
  • 联系我们
    • 电话:025-66045436合作
    • 官方小程序 技术宅小程序
      官方微信 技术宅微信