PHP 获取目录下的图片并随机显示的代码


Posted in PHP onDecember 28, 2009

当时想做一个随机更换背景图片的功能,用JavaScript写的话,程序流程应该是:建立一个图片数组->随机选择数组里其中一个值->生成样式并写入body标签。
可是用JS做的话,有以下缺点:
1.万一浏览器禁用了JS的话就失效了,而且写代码是需要考虑兼容性。
2.维护比较麻烦,图片的位置都存放在数组里。
于是我提议用PHP处理,可是我和她对PHP都是半桶水的,一时之间也想不出怎么做。今天时运高,看到一个PHP随机显示目录下图片的源码,学习一下,并分享之。 

先看看原理:从一个目录里获取某类型文件的清单(用在WEB的话一般是jpg/gif/png)->通过随机函数选一个图片->输出代码。
PHP代码如下:

$imglist=''; 
//用$img_folder变量保存图片所在目录,必须用“/”结尾 
$img_folder = "images/tutorials/"; 
mt_srand((double)microtime()*1000); 
//使用目录类 
$imgs = dir($img_folder); 
//检查目录下是否有图片,并生成一个清单 
while ($file = $imgs->read()) { 
if (eregi("gif", $file) || eregi("jpg", $file) || eregi("png", $file)) 
$imglist .= "$file "; 
} closedir($imgs->handle); 
//把清单里的项都放到一个数组里 
$imglist = explode(" ", $imglist); 
$no = sizeof($imglist)-2; 
//生成一个介于0和图片数量之间的随机数 
$random = mt_rand(0, $no); 
$image = $imglist[$random]; 
//输出结果 
echo '<img src="'.$img_folder.$image.'" border="0/" alt="" />';

如果要通过这个函数变换页面背景的话,可以把最后一句改为:
echo '<body style="background-image:'.$img_folder.$image.'>';</body>

并用整段程序替换<body>标签。
如果需要多次调用此程序的话,可以写成一个函数,各位按需要改写。
总结
用PHP的方法来输出随机图片的好处是:
1.维护简单,只需要控制目录里图片的数量。
2.可以自定义文件类型,只要你有需要,改成随机输出一个Flash也行的
3.可以自定义输出结果,换句话说,用在什么地方都行了
4.改写成函数后功能更强大
PHP 相关文章推荐
Excel数据导入Mysql数据库的实现代码
Jun 05 PHP
php数组函数序列之array_key_exists() - 查找数组键名是否存在
Oct 29 PHP
php解析html类库simple_html_dom(详细介绍)
Jul 05 PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
Nov 04 PHP
php文件读取方法实例分析
Jun 20 PHP
php如何实现只替换一次或N次
Oct 29 PHP
PHP图形操作之Jpgraph学习笔记
Dec 25 PHP
PHP6连接SQLServer2005的三部曲
Apr 15 PHP
注意!PHP 7中不要做的10件事
Sep 18 PHP
php使用PDO获取结果集的方法
Feb 16 PHP
laravel 创建命令行命令的图文教程
Oct 23 PHP
laravel框架学习笔记之组件化开发实现方法
Feb 01 PHP
phpMyAdmin链接MySql错误 个人解决方案
Dec 28 #PHP
php 需要掌握的东西 不做浮躁的人
Dec 28 #PHP
php 文章采集正则代码
Dec 28 #PHP
PHP array_push 数组函数
Dec 26 #PHP
PHP simple_html_dom.php+正则 采集文章代码
Dec 24 #PHP
在PHP中检查PHP文件是否有语法错误的方法
Dec 23 #PHP
php 常用类整理
Dec 23 #PHP
You might like
JAVA/JSP学习系列之四
2006/10/09 PHP
深入解析php中的foreach函数
2013/08/31 PHP
php 获取SWF动画截图示例代码
2014/02/10 PHP
php curl 上传文件代码实例
2015/04/27 PHP
PHP 绘制网站登录首页图片验证码
2016/04/12 PHP
PHP中命名空间的使用例子
2019/03/22 PHP
js function使用心得
2010/05/10 Javascript
javascript跨域刷新实现代码
2011/01/01 Javascript
javascript检测页面是否缩放的小例子
2013/05/16 Javascript
JavaScript实现在数组中查找不同顺序排列的字符串
2014/09/26 Javascript
jQuery中end()方法用法实例
2015/01/08 Javascript
angularjs学习笔记之完整的项目结构
2015/09/26 Javascript
跟我学习javascript的函数调用和构造函数调用
2015/11/16 Javascript
清除输入框内的空格
2016/12/21 Javascript
详解用webpack把我们的业务模块分开打包的方法
2017/07/20 Javascript
Material(包括Material Icon)在Angular2中的使用详解
2018/02/11 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
2018/10/24 Javascript
[47:21]Liquid vs TNC Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
[54:47]Liquid vs VP Supermajor决赛 BO 第五场 6.10
2018/07/05 DOTA
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
Pyhton中单行和多行注释的使用方法及规范
2016/10/11 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
2018/12/26 Python
selenium+python自动化测试之环境搭建
2019/01/23 Python
python实现超市管理系统(后台管理)
2019/10/25 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
2020/11/17 Python
html5 Canvas画图教程(11)—使用lineTo/arc/bezierCurveTo画椭圆形
2013/01/09 HTML / CSS
日本7net购物网:书籍、漫画、杂志、DVD、游戏邮购
2017/02/17 全球购物
美国班级戒指、帽子和礼服、毕业产品、年鉴:Balfour
2018/11/01 全球购物
乌克兰数字设备、配件和智能技术的连锁商店:KTC
2020/08/18 全球购物
2014年生产管理工作总结
2014/12/23 职场文书
4S店客服专员岗位职责
2015/04/07 职场文书
2015年中学图书馆工作总结
2015/07/22 职场文书
职工培训工作总结
2015/08/10 职场文书
2016年春季运动会通讯稿
2015/11/25 职场文书
2019年度政务公开考核工作总结模板
2019/11/11 职场文书
python 实现图与图之间的间距调整subplots_adjust
2021/05/21 Python