源码介绍
源码介绍
Random-Image是一款开源的随机图片API源码,可以快速搭建一个随机图片程序,完全隐藏图片文件的真实地址,支持调用域名白名单,支持多文件夹分类目录,前端调用支持使用随机数载入。
源码安装方法
下载代码,解压至你域名文件夹根目录
开启 Apache 或者 Nginx 的伪静态功能
访问:你的域名/images
其他配置方法:
打开 images.php 文件,添加域名白名单与默认文件夹即可。
<?phperror_reporting(E_ERROR);require_once'imgdata.php';$karnc=newimgdata();/***遍历获取目录下的指定类型的文件*@param$path*@paramarray$files*@returnarray*/functiongetfiles($path,$allowFiles,&$files=array()){if(!is_dir($path))returnnull;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*@returntrue/false*在下面修改为你的网站域名,在下面列表中的网站才能调用API*/functioncheckReferer($domain_list=array('haremu.com','acg.sx')){$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;}//列出指定目录下的图片$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//存在前一URLif($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.phplast;rewrite^/images/(.*?)$/images.php?folder=$1last;
#下面是子目录例子:
rewrite^/api/images$/api/images.phplast;rewrite^/api/images/(.*?)$/api/images.php?folder=$1last;
Apache伪静态
<IfModulemod_rewrite.c>RewriteEngineOnRewriteRule^images$images.php[L,QSA]RewriteRule^images/(.*?)$images.php?folder=$1[L]</IfModule>
使用随机数载入的情况通常在一个页面多次调用随机图的时候,比如首页文章列表,否则图片都是一样的。
随机数载入方式:“ 你的域名/images?随机数 ” ,就是原有 URL 上添加一个英文问号和任意随机数。
示例:
<imgsrc="https://caijicaiji.com/api/images"><imgsrc="https://caijicaiji.com/api/images/acg"><imgsrc="https://caijicaiji.com/api/images?d8c196951e5bbf3edd158de4"><imgsrc="https://caijicaiji.com/api/images/acg?9f0d34f8ee6f96b56d8902d1">
源码下载地址
下载即代表您已阅读并同意以下条款:
1、所有资源仅供学习与参考,请学习后自行删除。本站不提供任何技术支持。
2、本站不保证资源的完整性、可用性、安全性。(单独付费源码除外)
3、如有侵犯您的版权,请及时联系我们,我们将下架处理。
1、所有资源仅供学习与参考,请学习后自行删除。本站不提供任何技术支持。
2、本站不保证资源的完整性、可用性、安全性。(单独付费源码除外)
3、如有侵犯您的版权,请及时联系我们,我们将下架处理。