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 相关文章推荐
echo(),print(),print_r()之间的区别?
Nov 19 PHP
一周学会PHP(视频)Http下载
Dec 12 PHP
转PHP手册及PHP编程标准
Dec 17 PHP
php下获取http状态的实现代码
May 09 PHP
php实现给图片加灰色半透明效果的方法
Oct 20 PHP
学习php设计模式 php实现单例模式(singleton)
Dec 07 PHP
简介PHP的Yii框架中缓存的一些高级用法
Mar 29 PHP
php字符串的替换,分割和连接方法
May 23 PHP
PHP 二级子目录(后台目录)设置二级域名
Mar 02 PHP
php面向对象之反射功能与用法分析
Mar 29 PHP
php调用云片网接口发送短信的实现方法
Oct 25 PHP
Swoole4.4协程抢占式调度器详解
May 23 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
dedecms防止FCK乱格式化你的代码的修改方法
2007/03/17 PHP
php 文章采集正则代码
2009/12/28 PHP
PHP将DateTime对象转化为友好时间显示的实现代码
2011/09/20 PHP
PHP并发多进程处理利器Gearman使用介绍
2016/05/16 PHP
PHP 7.4中使用预加载的方法详解
2019/07/08 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
离开页面时检测表单元素是否被修改,提示保存的js代码
2010/08/25 Javascript
jqPlot 图表中文API使用文档及源码和在线示例
2012/02/07 Javascript
jQuery简单注册和禁用全局事件的方法
2016/07/25 Javascript
nodejs redis 发布订阅机制封装实现方法及实例代码
2016/12/15 NodeJs
详解如何在vue中使用sass
2017/06/21 Javascript
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
微信小程序开发之tabbar图标和颜色的实现
2018/10/17 Javascript
详解Webpack loader 之 file-loader
2018/11/07 Javascript
每天学点Vue源码之vm.$mount挂载函数
2019/03/11 Javascript
详解Vue前端对axios的封装和使用
2019/04/01 Javascript
JS实现倒序输出的几种常用方法示例
2019/04/13 Javascript
对Tensorflow中权值和feature map的可视化详解
2018/06/14 Python
Python实现的连接mssql数据库操作示例
2018/08/17 Python
python引入不同文件夹下的自定义模块方法
2018/10/27 Python
python解析xml简单示例
2019/06/21 Python
Python Threading 线程/互斥锁/死锁/GIL锁
2019/07/21 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
2019/11/15 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
2020/03/10 Python
Pymysql实现往表中插入数据过程解析
2020/06/02 Python
PyCharm2020.3.2安装超详细教程
2021/02/08 Python
大学生职业规划前言模板
2013/12/27 职场文书
法学院方阵解说词
2014/01/29 职场文书
劲霸男装广告词改编版
2014/03/21 职场文书
2014年党员整改措施
2014/10/24 职场文书
超市工作总结范文2014
2014/12/19 职场文书
vue-cli4.5.x快速搭建项目
2021/05/30 Vue.js
javascript函数式编程基础
2021/09/15 Javascript
openGauss数据库JDBC环境连接配置的详细过程(Eclipse)
2022/06/01 Java/Android
win7配置本地ftp服务器的图文教程
2022/08/05 Servers