使用 PHP 实现随机照片使用 PHP 实现随机照片

生命不息,
折腾不止!

使用 PHP 实现随机照片

美女高清桌面壁纸接口支持URL、JSON、XML、302跳转以及直接显示图片的形式调用。其中URL指的是的直接显示图片链接,302跳转指的是访问API时会跳转到图片文件的链接。

 

php随机壁纸图片API接口多种输出

 

调用例:

调用代码:

<img src="https://cdn.mom1.cn/?mom=302">

 

接口php源代码:

<?php
//This will get an array of all the gif, jpg and png images in a folder 
$img_array = glob("img/*.{gif,jpg,png}",GLOB_BRACE);  //img目录下的gif,jpg,png
//Domain Setting
$domain = 'cdn.mom1.cn';//访问域名为cdn.mom1.cn
//Pick a random image from the array 
$img = array_rand($img_array);
//XML Return
function array2xml($array, $wrap='ROOT', $upper=true) {
    // set initial value for XML string
#    $xml = '';
    // wrap XML with $wrap TAG
    if ($wrap != null) {
        $xml = "<$wrap>\n";
    }
    // main loop
    foreach ($array as $key=>$value) {
        // set tags in uppercase if needed
        if ($upper == true) {
            $key = strtoupper($key);
        }
        // append to XML string
        $xml .= "<$key>" . htmlspecialchars(urldecode(trim($value))) . "</$key>";
    }
    // close wrap TAG if needed
    if ($wrap != null) {
        $xml .= "\n</$wrap>\n";
    }
    // return prepared XML string
    return $xml;
}
//Result Generate
$result['error']=0;
$result['result']=200;
$result['img']='//'.$domain.'/'.$img_array[$img];
//Type Choose
$type=$_GET['mom'];
switch ($type)
{
//HTML
case 'url':
echo $result['img'];
break;
//JSON
case 'json':
header('Content-type:text/json');
echo json_encode($result, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
break;
//XML
case 'xml':
header("Content-type:text/xml");
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo array2xml($result);
break;
//302 Redirect
case '302':
header("Location:".$result['img']);
break;
//IMG
default:
echo '<img alt="'.$result['img'].'" src="'.$result['img'].'" />';
break;
}
?>

 

<?php 
//This will get an array of all the gif, jpg and png images in a folder 
$img_array = glob("img/*.{gif,jpg,png}",GLOB_BRACE); 

//Domain Setting
$domain = 'img.btu.pp.ua';

//Pick a random image from the array 
$img = array_rand($img_array); 

//Result Generate
$result['error']=0;
$result['result']=200;
$result['img']='//'.$domain.'/'.$img_array[$img];

//Type Choose
$type=$_GET['type'];
switch ($type)
{

//HTML
case 'url':
echo $result['img'];
break;

//JSON
case 'json':
header('Content-type:text/json');
echo json_encode($result, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
break;

//302 Redirect
case '302':
header("Location:".$result['img']);
break;

//IMG
default:
echo '<img alt="'.$result['img'].'" src="'.$result['img'].'" />';
break;
}

 

2.

简单制作视频/图片API做属于自己的API(本地/外链API)  来源:https://www.ly522.com/797.html

外链版图片API

首先需要外链图片(一行一个链接)缺点就是有时候图片会重复

代码如下:

<?php
$arr=file('images.txt');
$n=count($arr)-1;
for ($i=1;$i<=1;$i++){
$x=rand(0,$n);
header("Location:".$arr[$x],"\n");
}
?>

 

制作方法

新建一个PHP文件(名字自己取)在创建一个images.txt文档文件,把外链图片放进去

上传服务器空间 然后访问域名/PHP文件名就可以啦

代码放在压缩文件了,下方有下载(我把代码高亮给搞异常了所以就是这样)

 

本地化图片api

制作方法

新建一个PHP文件(名字自己取)在创建一个img文件夹,把图片放进去

上传服务器空间 然后访问域名/PHP文件名就可以啦

代码放在压缩文件了,下方有下载(我把代码高亮给搞异常了所以就是这样)

代码如下:

<?php
$img_array = glob("img/*.{gif,jpg,png}",GLOB_BRACE); 
$img = array_rand($img_array); 
$dz = $img_array[$img];
header("Location:".$dz);
?>

 

本地化视频api

制作方法

新建一个PHP文件(名字自己取)在创建一个video文件夹,把视频放进去

上传服务器空间 然后访问域名/PHP文件名就可以啦

代码放在压缩文件了,下方有下载(我把代码高亮给搞异常了所以就是这样)

代码如下:

<?php
$video_array = glob("video/*.{mp4}",GLOB_BRACE); 
$video = array_rand($video_array); 
$dz = $video_array[$video];
header("Location:".$dz);
?>

3.

一个图片API遍及各目录代码分享 https://www.ly522.com/1375.html

摘要:之前分享都是只能访问一个文件夹获取图片... 于是啊就有了这一段代码

 

之前分享都是只能访问一个文件夹获取图片…

于是啊就有了这一段代码

新建了个index.php通过 $_GET 来实现。

index.php代码:

<?php
if($_GET["id"]==1){
$img_array = glob("次元/*.{gif,jpg,png}",GLOB_BRACE);
$img = array_rand($img_array);
echo '<img alt="'.$img_array[$img].'" src="'.$img_array[$img].'" />';
}

if($_GET["id"]==2){
$img_array = glob("美图/*.{gif,jpg,png}",GLOB_BRACE);
$img = array_rand($img_array);
echo '<img alt="'.$img_array[$img].'" src="'.$img_array[$img].'" />';
}
?>

机智如我,然后去新建一个文件夹 分别为 次元 、 美图 这两个。(目录可以英文啦)  也可以自定义手动增加多目录

接下来在这两个文件夹上传图片文件

然后试试访问 域名 /?id=1 或 域名 /?id=2

4.PHP 实现随机图像功能

https://mkblog.cn/1836/

<?php
$img_array = glob('images/*.{gif,jpg,png,jpeg,webp,bmp}', GLOB_BRACE);
if(count($img_array) == 0) die('没找到图片文件。请先上传一些图片到 '.dirname(__FILE__).'/images/ 文件夹');
header('Content-Type: image/png');
echo(file_get_contents($img_array[array_rand($img_array)]));
?>

以上的代码会查找 images 目录下的所有图片,并随机挑选出一张显示出来。

随机背景

实现随机背景样式详细代码如下:

<style type="text/css">body { background-image: url("http://www.quanbaike.com/tool/picapi/api/index.php"); background-position: center top; background-size: cover; background-repeat: no-repeat; background-attachment: fixed; } </style>

 

如果一时找不到好的图片素材,不妨从这下载 368张必应日图&它们的故事打包下载(https://mkblog.cn/1249/)

 

5.

通过PHP函数实现刷新随机显示不同的图片  Via

因为前两天做了一个评论系统,因为匿名的,所以,不想头像太过单调,就给搞了一个随机头像显示的小东西。大部分人都是想到用js去实现,我呢,JS不算太熟悉,所以就转而用PHP来做了。

每次刷新都会随机刷新一张图片,当然了,图片是提前设定好的目录,只会读取设定目录的图片文件,支持:gif和jpg,如果需要png或者其他格式的图片,也可以自行修改代码。

功能演示,刷新页面即可刷新一张图片

 

调用代码

<img alt="" src="https://www.shaosiming.net/tu.php" style="width: 345px; height: 200px;" />

 

 

PHP代码

$folder='/images/'; 的images是图片文件夹路径设置

<?php
/**
* 功能:随机显示图片
* Filename  : img.php
* Usage:
*             <img src=img.php>
*             <img src=img.php?folder=images2/>
**/
  if($_GET['folder']){
     $folder=$_GET['folder'];
  }else{
     $folder='/images/';  //图片的路径文件夹设置
  }
  $path = $_SERVER['DOCUMENT_ROOT']."/".$folder;
  $files=array();
  if ($handle=opendir("$path")) {
      while(false !== ($file = readdir($handle))) {
                if ($file != "." && $file != "..") {
                if(substr($file,-3)=='gif' || substr($file,-3)=='jpg') $files[count($files)] = $file;
                }
      }
  }
  closedir($handle);

  $random=rand(0,count($files)-1);
  if(substr($files[$random],-3)=='gif') header("Content-type: image/gif");
  elseif(substr($files[$random],-3)=='jpg') header("Content-type: image/jpeg");
  readfile("$path/$files[$random]");
?>

 

7.

random-images

随机图片,此项目实例为二次元随机壁纸,用来做背景图API使用。

 

https://github.com/zenking/random-images

random-images-master.zip (19.47 KB)

 

 

8.搭建自用随机图片API,隐藏真实图片地址

Via:https://tvv.tw/blog/archives/168.html

示例

https://tvv.tw/xjj/meinv/ct.html //该网页用的下面的API。

https://cf.cdn.xiazai.de/api/images //直接访问API无法显示图片。

特性

完全隐藏图片文件的真实地址

支持调用域名白名单

支持多文件夹分类目录

前端调用支持使用随机数载入

部署

https://github.com/galnetwen/Random-Image

本地下载:Random-Image-master.zip (10.21 MB)

  1. 下载代码,解压至你域名文件夹根目录或者子目录
  2. 开启 Apache 或者 Nginx 的伪静态功能
  3. 访问:你的域名/images
  4. 大功告成

配置

打开 images.php 文件,添加域名白名单与默认文件夹即可。 照葫芦画瓢,不用多说了吧。

<?php
error_reporting(E_ERROR);
require_once 'imgdata.php';
$karnc = new imgdata();
 
/**
 * 遍历获取目录下的指定类型的文件
 * @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
 *在下面修改为你的网站域名,在下面列表中的网站才能调用API
 */
function checkReferer($domain_list = array(
    'haremu.com',
    'acg.sx'
)) {
    $status = false;
    $refer = $_SERVER['HTTP_REFERER']; //前一URL
    if ($refer) {
        $referhost = parse_url($refer);
        /**来源地址主域名**/
        $host = strtolower($referhost['host']);
        if ($host == $_SERVER['HTTP_HOST'] || in_array($host, $domain_list)) {
            $status = true;
        }
    }
    return $status;
}
 
//列出指定目录下的图片
$CONFIG = array();
$CONFIG['imageManagerAllowFiles'] = array(".png", ".jpg", ".jpeg", ".gif", ".bmp");
 
$base_Path = '/picture/'; //图片默认主目录
$category = 'a'; //图片默认分类目录
 
if ($_GET['folder']) {
    $folder = trim($_GET['folder']);
    $CONFIG['imageManagerListPath'] = $base_Path . $folder . '/';  //有GET访问的分类目录
} else {
    $CONFIG['imageManagerListPath'] = $base_Path . $category . '/'; //无GET访问的默认目录
}
 
$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)) {
    return "抱歉,没有找到匹配的文件!";
}
 
//获取指定范围的列表
$len = count($files);
for ($i = 0, $list = array(); $i < $len; $i++) {
    $list[] = $files[$i];
}
 
$rand = array_rand($list, 1);
$img = $list[$rand];
$imgFile = $_SERVER['DOCUMENT_ROOT'] . (substr($list[$rand], 0, 1) == "/" ? "" : "/") . $img;
$imgNot = $_SERVER['DOCUMENT_ROOT'] . '/' . 'nico.gif'; //无授权域名图片
$refer = $_SERVER['HTTP_REFERER']; //前一URL
 
//存在前一URL
if ($refer) {
    if (!checkReferer()) {
        $karnc->getdir($imgNot);
        $karnc->img2data();
        $karnc->data2img();
        die;
    } else {
        $karnc->getdir($imgFile);
        $karnc->img2data();
        $karnc->data2img();
        die;
    }
} else {
    //直接访问API地址
    $imgWeb = file_get_contents('imgweb.html');
    echo $imgWeb;
    die;
}
?>

多文件夹说明: 第二个文件夹无需配置,直接使用 URL 传递参数即可。

比如: 默认文件夹的分类,调用的域名是:“ 你的域名/images ”

其它文件夹的分类,调用是域名是:“ 你的域名/images/文件夹名 ”

注意! 若要使用随机数调用,必须启用 Apache 或者 Nginx 的伪静态功能,否则空白输出。

Nginx 用户需要手动添加 nginx.conf 文件里面的伪静态规则到你的域名配置中去……

rewrite ^/images$ /images.php last;
rewrite ^/images/(.*?)$ /images.php?folder=$1 last;
#下面是子目录例子:
rewrite ^/api/images$ /api/images.php last;
rewrite ^/api/images/(.*?)$ /api/images.php?folder=$1 last;

Apache伪静态

<IfModule mod_rewrite.c>
 
    RewriteEngine On
 
    RewriteRule ^images$ images.php [L,QSA]
    RewriteRule ^images/(.*?)$ images.php?folder=$1 [L]
 
</IfModule>

使用随机数载入的情况通常在一个页面多次调用随机图的时候,比如首页文章列表,否则图片都是一样的。

随机数载入方式:“ 你的域名/images?随机数 ” ,就是原有 URL 上添加一个英文问号和任意随机数。

示例:

<img src="https://cf.cdn.xiazai.de/api/images">
<img src="https://cf.cdn.xiazai.de/api/images/acg">
<img src="https://cf.cdn.xiazai.de/api/images?d8c196951e5bbf3edd158de4">
<img src="https://cf.cdn.xiazai.de/api/images/acg?9f0d34f8ee6f96b56d8902d1">

 

赞() 打赏
未经允许不得转载:我的博客 » 使用 PHP 实现随机照片
分享到: 更多 (0)

评论 4

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    这是评论测试

    DUX主题小秘7个月前 (09-17)回复
    • 飞歌导航东方红烦得很

      themebetter主题小秘3周前 (04-08)回复
  2. #2

    这是新的一条评论

    DUX主题小秘7个月前 (09-17)回复
  3. #3

    未来一年,中国的移动支付市场会是什么样?

    DUX主题小秘7个月前 (09-17)回复

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

大前端WP主题 更专业 更方便

联系我们 联系我们