PHP实现自动对图片进行滚动显示的方法


Posted in PHP onMarch 12, 2015

本文实例讲述了PHP实现自动对图片进行滚动显示的方法。分享给大家供大家参考。具体如下:

指定某个图片目录,该程序自动在页面上滚动展示每一张图片,使用方法:

1. 创建一个幻灯片的图像文件夹。
2. 删除图像文件夹中的幻灯片。
3. 将下面代码编码后,粘贴在一个文本文件中,命名为“index.php”
4. 上传文件到一个目录中
5. 更换第6和8行为你对应的设置。
6. 运行 (使用第4步中设置的URL)

代码如下:

<?

/*

    PHP image slideshow - auto version - PHP5

*/

// set the absolute path to the directory containing the images

define ('IMGDIR', '/home/devel/public_html/domain.com/public/images/slideshow/');

// same but for www

define ('WEBIMGDIR', '/images/slideshow/');

// set session name for slideshow "cookie"

define ('SS_SESSNAME', 'slideshow_sess');

// global error variable

$err = '';

// start img session

session_name(SS_SESSNAME);

session_start();

// init slideshow class

$ss = new slideshow($err);

if (($err = $ss->init()) != '')

{

    header('HTTP/1.1 500 Internal Server Error');

    echo $err;

    exit();

}

// get image files from directory

$ss->get_images();

// set variables, done.

list($curr, $caption, $first, $prev, $next, $last) = $ss->run();

/*

    slideshow class, can be used stand-alone

*/

class slideshow

{

    private $files_arr = NULL;

    private $err = NULL;

    public function __construct(&$err)

    {

        $this->files_arr = array();

        $this->err = $err;

    }

    public function init()

    {

        // run actions only if img array session var is empty

        // check if image directory exists

        if (!$this->dir_exists())

        {

            return 'Error retrieving images, missing directory';

        }

        return '';

    }

    public function get_images()

    {

        // run actions only if img array session var is empty

        if (isset($_SESSION['imgarr']))

        {

            $this->files_arr = $_SESSION['imgarr'];

        }

        else

        {

            if ($dh = opendir(IMGDIR))

            {

                while (false !== ($file = readdir($dh)))

                {

                    if (preg_match('/^.*\.(jpg|jpeg|gif|png)$/i', $file))

                    {

                        $this->files_arr[] = $file;

                    }

                }

                closedir($dh);

            }

            $_SESSION['imgarr'] = $this->files_arr;

        }

    }

    public function run()

    {

        $curr = 1;

        $last = count($this->files_arr);

        if (isset($_GET['img']))

        {

            if (preg_match('/^[0-9]+$/', $_GET['img'])) $curr = (int)  $_GET['img'];

            if ($curr <= 0 || $curr > $last) $curr = 1;

        }

        if ($curr <= 1)

        {

            $prev = $curr;

            $next = $curr + 1;

        }

        else if ($curr >= $last)

        {

            $prev = $last - 1;

            $next = $last;

        }

        else

        {

            $prev = $curr - 1;

            $next = $curr + 1;

        }

        // line below sets the caption name...

        $caption = str_replace('-', ' ', $this->files_arr[$curr - 1]);

        $caption = str_replace('_', ' ', $caption);

        $caption = preg_replace('/\.(jpe?g|gif|png)$/i', '', $caption);

        $caption = ucfirst($caption);

        return array($this->files_arr[$curr - 1], $caption, 1, $prev, $next, $last);

    }

    private function dir_exists()

    {

        return file_exists(IMGDIR);

    }

}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>Slideshow</title>

    <style type="text/css">

    body{margin: 0;padding: 0;font: 100% Verdana, Arial, Helvetica, sans-serif;font-size: 14px;}

    div#gallery{border: 1px #ccc solid;width: 600px;margin: 40px auto;text-align: center;}

    div#gallery img{margin: 20px;border: 2px #004694 solid;}

    div#gallery p{color: #004694;}

    div#gallery div.pn{padding: 10px;margin: 0 5px;border-top: 1px #ccc solid;}

    a{color:#333;}

    a:hover{color:#cc0000;}

    a.sp{padding-right: 40px;}

    </style>

</head>

<body>

    <div id="gallery">

        <img src="<?=WEBIMGDIR;?><?=$curr;?>" alt="" />

        <p><?=$caption;?></p>

        <div class="pn">

            <a href="?img=<?=$first;?>">First</a> | <a href="?img=<?=$prev;?>" class="sp">Previous</a><a href="?img=<?=$next;?>">Next</a> | <a href="?img=<?=$last;?>">Last</a>

        </div>

    </div>

</body>

</html>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
vBulletin Forum 2.3.xx SQL Injection
Oct 09 PHP
PHP实现MVC开发得最简单的方法――模型
Apr 10 PHP
关于Appserv无法打开localhost问题的解决方法
Oct 16 PHP
PHP性能优化准备篇图解PEAR安装
Dec 05 PHP
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
Jun 28 PHP
discuz目录文件资料汇总
Dec 30 PHP
PHP获取一段文本显示点阵宽度和高度的方法
Mar 12 PHP
php使用递归函数实现数字累加的方法
Mar 16 PHP
php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
Feb 04 PHP
老生常谈PHP面向对象之注册表模式
May 26 PHP
yii2 commands模式以及配置crontab定时任务的方法
Aug 19 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
Oct 11 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
Mar 12 #PHP
PHP从FLV文件获取视频预览图的方法
Mar 12 #PHP
PHP简单获取视频预览图的方法
Mar 12 #PHP
php使用memcoder将视频转成mp4格式的方法
Mar 12 #PHP
PHP实现将视频转成MP4并获取视频预览图的方法
Mar 12 #PHP
PHP实现从远程下载文件的方法
Mar 12 #PHP
PHP判断网络文件是否存在的方法
Mar 12 #PHP
You might like
php二维数组用键名分组相加实例函数
2013/11/06 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
2015/01/04 PHP
PHP 与 UTF-8 的最佳实践详细介绍
2017/01/04 PHP
Yii2实现增删改查后留在当前页的方法详解
2017/01/13 PHP
PHP中empty,isset,is_null用法和区别
2017/02/19 PHP
基于php+MySql实现学生信息管理系统实例
2020/08/04 PHP
Track Image Loading效果代码分析
2007/08/13 Javascript
Javascript面向对象编程(三) 非构造函数的继承
2011/08/28 Javascript
String.prototype实现的一些javascript函数介绍
2013/11/22 Javascript
判断iframe里的页面是否加载完成
2014/06/06 Javascript
js实现div闪烁原理及实现代码
2014/06/24 Javascript
jQuery中prependTo()方法用法实例
2015/01/08 Javascript
js钢琴按钮波浪式图片排列效果代码分享
2015/08/26 Javascript
分享jQuery封装好的一些常用操作
2016/07/28 Javascript
详解Sea.js中Module.exports和exports的区别
2017/02/12 Javascript
javascript获取以及设置光标位置
2017/02/16 Javascript
AjaxUpLoad.js实现文件上传功能
2018/03/02 Javascript
红黑树的插入详解及Javascript实现方法示例
2018/03/26 Javascript
微信小程序API—获取定位的详解
2019/04/30 Javascript
JavaScript接口实现方法实例分析
2020/05/16 Javascript
vue 通过绑定事件获取当前行的id操作
2020/07/27 Javascript
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
2021/01/05 Vue.js
[02:26]2018DOTA2亚洲邀请赛赛前采访-Newbee篇
2018/04/03 DOTA
Python多进程入门、分布式进程数据共享实例详解
2019/06/03 Python
解决pyshp UnicodeDecodeError的问题
2019/12/06 Python
电脑教师的自我评价
2013/12/18 职场文书
关于旷工的检讨书
2014/02/02 职场文书
小学节能减排倡议书
2014/05/15 职场文书
学校党的群众路线教育实践活动总结材料
2014/10/30 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书
鲁迅故居导游词
2015/02/05 职场文书
2015年护士工作总结范文
2015/03/31 职场文书
清明节随笔
2015/08/15 职场文书
高中体育课教学反思
2016/02/16 职场文书
Feign调用传输文件异常的解决
2021/06/24 Java/Android
SpringBoot项目部署到阿里云服务器的实现步骤
2022/06/28 Java/Android