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

这篇文章主要介绍了PHP实现自动对图片进行滚动显示的方法,涉及php操作图片特效的技巧,具有一定参考借鉴价值,需要的朋友可以参考下。

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

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

1. 创建一个幻灯片的图像文件夹。

2. 删除图像文件夹中的幻灯片。

3. 将下面代码编码后,粘贴在一个文本文件中,命名为“index.php”

4. 上传文件到一个目录中

5. 更换第6和8行为你对应的设置。

6. 运行 (使用第4步中设置的URL)

代码如下:

  1. <?
  2. /*
  3. PHP image slideshow - auto version - PHP5
  4. */
  5. // set the absolute path to the directory containing the images
  6. define ('IMGDIR', '/home/devel/public_html/domain.com/public/images/slideshow/');
  7. // same but for www
  8. define ('WEBIMGDIR', '/images/slideshow/');
  9. // set session name for slideshow "cookie"
  10. define ('SS_SESSNAME', 'slideshow_sess');
  11. // global error variable
  12. $err = '';
  13. // start img session
  14. session_name(SS_SESSNAME);
  15. session_start();
  16. // init slideshow class
  17. $ss = new slideshow($err);
  18. if (($err = $ss->init()) != '')
  19. {
  20. header('HTTP/1.1 500 Internal Server Error');
  21. echo $err;
  22. exit();
  23. }
  24. // get image files from directory
  25. $ss->get_images();
  26. // set variables, done.
  27. list($curr, $caption, $first, $prev, $next, $last) = $ss->run();
  28. /*
  29. slideshow class, can be used stand-alone
  30. */
  31. class slideshow
  32. {
  33. private $files_arr = NULL;
  34. private $err = NULL;
  35. public function __construct(&$err)
  36. {
  37. $this->files_arr = array();
  38. $this->err = $err;
  39. }
  40. public function init()
  41. {
  42. // run actions only if img array session var is empty
  43. // check if image directory exists
  44. if (!$this->dir_exists())
  45. {
  46. return 'Error retrieving images, missing directory';
  47. }
  48. return '';
  49. }
  50. public function get_images()
  51. {
  52. // run actions only if img array session var is empty
  53. if (isset($_SESSION['imgarr']))
  54. {
  55. $this->files_arr = $_SESSION['imgarr'];
  56. }
  57. else
  58. {
  59. if ($dh = opendir(IMGDIR))
  60. {
  61. while (false !== ($file = readdir($dh)))
  62. {
  63. if (preg_match('/^.*\.(jpg|jpeg|gif|png)$/i', $file))
  64. {
  65. $this->files_arr[] = $file;
  66. }
  67. }
  68. closedir($dh);
  69. }
  70. $_SESSION['imgarr'] = $this->files_arr;
  71. }
  72. }
  73. public function run()
  74. {
  75. $curr = 1;
  76. $last = count($this->files_arr);
  77. if (isset($_GET['img']))
  78. {
  79. if (preg_match('/^[0-9]+$/', $_GET['img'])) $curr = (int) $_GET['img'];
  80. if ($curr <= 0 || $curr > $last) $curr = 1;
  81. }
  82. if ($curr <= 1)
  83. {
  84. $prev = $curr;
  85. $next = $curr + 1;
  86. }
  87. else if ($curr >= $last)
  88. {
  89. $prev = $last - 1;
  90. $next = $last;
  91. }
  92. else
  93. {
  94. $prev = $curr - 1;
  95. $next = $curr + 1;
  96. }
  97. // line below sets the caption name...
  98. $caption = str_replace('-', ' ', $this->files_arr[$curr - 1]);
  99. $caption = str_replace('_', ' ', $caption);
  100. $caption = preg_replace('/\.(jpe?g|gif|png)$/i', '', $caption);
  101. $caption = ucfirst($caption);
  102. return array($this->files_arr[$curr - 1], $caption, 1, $prev, $next, $last);
  103. }
  104. private function dir_exists()
  105. {
  106. return file_exists(IMGDIR);
  107. }
  108. }
  109. ?>
  110. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  111. <html xmlns="http://www.w3.org/1999/xhtml">
  112. <head>
  113. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  114. <title>Slideshow</title>
  115. <style type="text/css">
  116. body{margin: 0;padding: 0;font: 100% Verdana, Arial, Helvetica, sans-serif;font-size: 14px;}
  117. div#gallery{border: 1px #ccc solid;width: 600px;margin: 40px auto;text-align: center;}
  118. div#gallery img{margin: 20px;border: 2px #004694 solid;}
  119. div#gallery p{color: #004694;}
  120. div#gallery div.pn{padding: 10px;margin: 0 5px;border-top: 1px #ccc solid;}
  121. a{color:#333;}
  122. a:hover{color:#cc0000;}
  123. a.sp{padding-right: 40px;}
  124. </style>
  125. </head>
  126. <body>
  127. <div >
  128. <img src="<?=WEBIMGDIR;?><?=$curr;?>" alt="" />
  129. <p><?=$caption;?></p>
  130. <div class="pn">
  131. <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>
  132. </div>
  133. </div>
  134. </body>
  135. </html>