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程序设计有所帮助。