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 相关文章推荐
php代码运行时间查看类代码分享
Aug 06 PHP
自定义session存储机制避免会话保持问题
Oct 08 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
Apr 08 PHP
PHP获取文件夹大小函数用法实例
Jul 01 PHP
php获取一定范围内取N个不重复的随机数
May 28 PHP
Linux平台PHP5.4设置FPM线程数量的方法
Nov 09 PHP
PHP正则表达式匹配替换与分割功能实例浅析
Feb 04 PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
Oct 13 PHP
PHP 中魔术常量的实例详解
Oct 26 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
May 24 PHP
php微信公众号开发之翻页查询
Oct 20 PHP
PHP如何通过date() 函数格式化显示时间
Nov 13 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
强烈推荐:php.ini中文版(2)
2006/10/09 PHP
MongoDB在PHP中的常用操作小结
2014/02/20 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
2015/06/29 PHP
php中时间函数date及常用的时间计算
2017/05/12 PHP
PHP实现类似题库抽题效果
2018/08/16 PHP
PHP中define() 与 const定义常量的区别详解
2019/06/25 PHP
laravel框架查询数据集转为数组的两种方法
2019/10/10 PHP
图片自动更新(说明)
2006/10/02 Javascript
实现局部遮罩与关闭原理及代码
2013/02/04 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
2014/01/13 Javascript
IE及IE6浏览器中判断JS文件加载成功失败的方法
2015/02/18 Javascript
Node.js Addons翻译(C/C++扩展)
2016/06/12 Javascript
AngularJS中的JSONP实例解析
2016/12/01 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
2019/03/25 Javascript
Vue实现Layui的集成方法步骤
2020/04/10 Javascript
在Python的Django框架中为代码添加注释的方法
2015/07/16 Python
在Django中编写模版节点及注册标签的方法
2015/07/20 Python
Python下载网络文本数据到本地内存的四种实现方法示例
2018/02/05 Python
python实现弹跳小球
2019/05/13 Python
django框架model orM使用字典作为参数,保存数据的方法分析
2019/06/24 Python
python按键按住不放持续响应的实例代码
2019/07/17 Python
Matplotlib绘制雷达图和三维图的示例代码
2020/01/07 Python
对tensorflow中cifar-10文档的Read操作详解
2020/02/10 Python
佳能德国网上商店:Canon德国
2017/03/18 全球购物
20世纪40年代连衣裙和复古服装:The Seamstress Of Bloomsbury
2018/07/24 全球购物
美国最大的购物网站:Amazon.com(亚马逊美国)
2020/05/23 全球购物
网络事业创业计划书范文
2014/01/09 职场文书
2014迎新年晚会策划方案
2014/02/23 职场文书
2015年学校党支部工作总结
2015/04/01 职场文书
2015年保育员个人工作总结
2015/05/13 职场文书
预备党员表决心的话
2015/09/22 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书
浅谈Python数学建模之固定费用问题
2021/06/23 Python
详解MongoDB排序时内存大小限制与创建索引的注意事项
2022/05/06 MongoDB