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

本文实例讲述了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程序设计有所帮助。

(0)

相关推荐

  • php将图片保存为不同尺寸图片的图片类实例

    本文实例讲述了php将图片保存为不同规格的图片类.分享给大家供大家参考.具体如下: 图片处理类.imagecls.php如下: <?php /** 图片处理类 */ class imagecls { /** * 文件信息 */ var $file = array(); /** * 保存目录 */ var $dir = ''; /** * 错误代码 */ var $error_code = 0; /** * 文件上传最大KB */ var $max_size = -1; function es_i

  • php获取网页里所有图片并存入数组的方法

    本文实例讲述了php获取网页里所有图片并存入数组的方法.分享给大家供大家参考.具体如下: $images = array(); preg_match_all('/(img|src)=("|')[^"'>]+/i', $data, $media); unset($data); $data=preg_replace('/(img|src)("|'|="|=')(.*)/i',"$3",$media[0]); foreach($data as $

  • php通过修改header强制图片下载的方法

    本文实例讲述了php通过修改header强制图片下载的方法.分享给大家供大家参考.具体实现方法如下: function downloadFile($file){ $file_name = $file; $mime = 'application/force-download'; header('Pragma: public'); // required header('Expires: 0'); // no cache header('Cache-Control: must-revalidate,

  • php上传图片客户端和服务器端实现方法

    本文实例讲述了php上传图片客户端和服务器端实现方法.分享给大家供大家参考.具体如下: 前台表单代码 <form name="form1" method="post" action="admin_upfile.php" enctype="multipart/form-data"> <input type="file" name="pic"> <input t

  • PHP安全上传图片的方法

    本文实例讲述了PHP安全上传图片的方法.分享给大家供大家参考.具体分析如下: 这段代码用于上传图片,可以根据图片类型检测图片是否安全,不是简单的检测扩展名 <?php // upload.php echo <<<_END <html><head><title>PHP Form Upload</title></head><body> <form method='post' action='upload2.p

  • php实现图片转换成ASCII码的方法

    本文实例讲述了php实现图片转换成ASCII码的方法.分享给大家供大家参考.具体如下: php图片转换成ASCII码,转换后可以直接通过字符串显示图片 <html> <head> <title>Ascii</title> <style> body{ line-height:0; font-size:1px; } </style> </head> <body> <?php $image = 'image.j

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

    本文实例讲述了PHP实现自动对图片进行滚动显示的方法.分享给大家供大家参考.具体如下: 指定某个图片目录,该程序自动在页面上滚动展示每一张图片,使用方法: 1. 创建一个幻灯片的图像文件夹. 2. 删除图像文件夹中的幻灯片. 3. 将下面代码编码后,粘贴在一个文本文件中,命名为"index.php" 4. 上传文件到一个目录中 5. 更换第6和8行为你对应的设置. 6. 运行 (使用第4步中设置的URL) 代码如下: 复制代码 代码如下: <? /*     PHP image

  • Android实现在TextView文字过长时省略部分或滚动显示的方法

    本文实例讲述了Android实现在TextView文字过长时省略部分或滚动显示的方法.分享给大家供大家参考,具体如下: TextView中有个ellipsize属性,作用是当文字过长时,该控件该如何显示,解释如下: 1.android:ellipsize="start"-–省略号显示在开头 2.android:ellipsize="end"--省略号显示在结尾 3.android:ellipsize="middle"--省略号显示在中间 4.an

  • JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法

    本文实例讲述了JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法.分享给大家供大家参考,具体如下: setTimeout 用于延时器,只执行一次. setInterval:用于多次执行. 项目中引用到jquery.timers-1.2.js定时器,并且MSClass做信息定期滚动,每3分钟执行一次,执行三次左右,滚动的次数越来越快,原因在于timers和MSClass都用了setInterval, 都会再次添加一个setInterval,最后导致几个setIn

  • Android编程实现大图滚动显示的方法

    本文实例讲述了Android编程实现大图滚动显示的方法.分享给大家供大家参考,具体如下: 问题: 我有一张比较大的图片,比如长宽都是屏幕的两倍大小,我想实现的功能是首先将图片居中显示,由于图片太大显然只能显示一部分,然后可以通过拖动,实现图片的平滑滚动(既看不出来滚动刷新痕迹). 就像google地图一样,如果用mapView这个控件,那么可以在屏幕上拖动整个地图,但是由于地图信息量太大,如果一次拖动过快,那么屏幕会暂时显示出一些刷新痕迹(灰白的格子). 想使用mapView来加载已有图片,但是

  • Android开发中TextView文本过长滚动显示实现方法分析

    本文实例讲述了Android开发中TextView文本过长滚动显示实现方法.分享给大家供大家参考,具体如下: 项目中在使用TextView时,总会有因要显示的内容过多而需要我们进行处理的问题.我们第一时间想到的是TextView的android:ellipsize属性,比如 android:ellipsize="end",效果是在文字的尾部打三个小点. 但是这个属性要配合android:singLine="true"使用.通常来说,要实现尾端三个点的省略号形式是比较

  • Delphi实现窗体感知鼠标滑过并自动隐藏与显示窗口的方法

    本文实例讲述了Delphi实现窗体感知鼠标滑过并自动隐藏与显示窗口的方法.分享给大家供大家参考.具体实现方法如下: const WM_MouseEnter = $B013; WM_MouseLeave = $B014; type TfrmMain = class(TForm) . . Timer1: TTimer; procedure Timer1Timer(Sender: TObject); protected procedure WMMouseEnter(var Msg: TMessage)

  • jQuery实现滚动到底部时自动加载更多的方法示例

    本文实例讲述了jQuery实现滚动到底部时自动加载更多的方法.分享给大家供大家参考,具体如下: 这里利用AJAX,实现滚动到底加载数据功能: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/

  • bootstrap滚动监控器使用方法解析

    滚动监控器 1.当用户鼠标滚动时,滚动条的位置会自动更新导航条中相应的导航项. 这是因为该插件可以自动检测滚动条到达哪个位置,然后在需要高亮的菜单元素上加了一个"active"样式. 滚动监控器–滚动监控器的设计 第一步:使用滚动监控器,首要的条件是在页面中加载对应的插件.在这里你可以加载合并好的bootstrap.js或者其独立的插件文件scrollspy.js.这里以加载合并好的js为例: <script src="https://ajax.googleapis.c

  • vue-seamless-scroll 实现简单自动无缝滚动且添加对应点击事件的简单整理

    目录 Vue 之 vue-seamless-scroll 实现简单自动无缝滚动,且添加对应点击事件的简单整理 一.简单介绍 二.安装和使用 三.效果图 四.vue-seamless-scroll 点击事件实现原理 五.简单实现 六.关键代码 Vue 之 vue-seamless-scroll 实现简单自动无缝滚动,且添加对应点击事件的简单整理 一.简单介绍 Vue 开发的一些知识整理,方便后期遇到类似的问题,能够及时查阅使用. 本节介绍,vue 中添加 vue-seamless-scroll,简

  • js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法

    页面滚动动态加载数据,页面下拉自动加载内容 相信很多人都见过瀑布流图片布局,那些图片是动态加载出来的,效果很好,对服务器的压力相对来说也小了很多 有手机的相信都见过这样的效果:进入qq空间,向下拉动空间,到底部时,会动态加载剩余的说说或者是日志 今天我们就来看看他们的实现思路和js控制动态加载的代码 下面的代码主要是控制滚动条下拉时的加载事件的 在下面代码说明出,写上你的操作即可,无论是加载图片还是加载记录数据  都可以 别忘了引用jquery类库 $(window).scroll(functi

随机推荐