PHP实现自动对图片进行滚动显示的方法
本文实例讲述了PHP实现自动对图片进行滚动显示的方法。分享给大家供大家参考。具体如下:
指定某个图片目录,该程序自动在页面上滚动展示每一张图片,使用方法:
1.创建一个幻灯片的图像文件夹。
2.删除图像文件夹中的幻灯片。
3.将下面代码编码后,粘贴在一个文本文件中,命名为“index.php”
4.上传文件到一个目录中
5.更换第6和8行为你对应的设置。
6.运行(使用第4步中设置的URL)
代码如下:
<?
/*
PHPimageslideshow-autoversion-PHP5
*/
//settheabsolutepathtothedirectorycontainingtheimages
define('IMGDIR','/home/devel/public_html/domain.com/public/images/slideshow/');
//samebutforwww
define('WEBIMGDIR','/images/slideshow/');
//setsessionnameforslideshow"cookie"
define('SS_SESSNAME','slideshow_sess');
//globalerrorvariable
$err='';
//startimgsession
session_name(SS_SESSNAME);
session_start();
//initslideshowclass
$ss=newslideshow($err);
if(($err=$ss->init())!='')
{
header('HTTP/1.1500InternalServerError');
echo$err;
exit();
}
//getimagefilesfromdirectory
$ss->get_images();
//setvariables,done.
list($curr,$caption,$first,$prev,$next,$last)=$ss->run();
/*
slideshowclass,canbeusedstand-alone
*/
classslideshow
{
private$files_arr=NULL;
private$err=NULL;
publicfunction__construct(&$err)
{
$this->files_arr=array();
$this->err=$err;
}
publicfunctioninit()
{
//runactionsonlyifimgarraysessionvarisempty
//checkifimagedirectoryexists
if(!$this->dir_exists())
{
return'Errorretrievingimages,missingdirectory';
}
return'';
}
publicfunctionget_images()
{
//runactionsonlyifimgarraysessionvarisempty
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;
}
}
publicfunctionrun()
{
$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;
}
elseif($curr>=$last)
{
$prev=$last-1;
$next=$last;
}
else
{
$prev=$curr-1;
$next=$curr+1;
}
//linebelowsetsthecaptionname...
$caption=str_replace('-','',$this->files_arr[$curr-1]);
$caption=str_replace('_','',$caption);
$caption=preg_replace('/\.(jpe?g|gif|png)$/i','',$caption);
$caption=ucfirst($caption);
returnarray($this->files_arr[$curr-1],$caption,1,$prev,$next,$last);
}
privatefunctiondir_exists()
{
returnfile_exists(IMGDIR);
}
}
?>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title>Slideshow</title>
<styletype="text/css">
body{margin:0;padding:0;font:100%Verdana,Arial,Helvetica,sans-serif;font-size:14px;}
div#gallery{border:1px#cccsolid;width:600px;margin:40pxauto;text-align:center;}
div#galleryimg{margin:20px;border:2px#004694solid;}
div#galleryp{color:#004694;}
div#gallerydiv.pn{padding:10px;margin:05px;border-top:1px#cccsolid;}
a{color:#333;}
a:hover{color:#cc0000;}
a.sp{padding-right:40px;}
</style>
</head>
<body>
<divid="gallery">
<imgsrc="<?=WEBIMGDIR;?><?=$curr;?>"alt=""/>
<p><?=$caption;?></p>
<divclass="pn">
<ahref="?img=<?=$first;?>">First</a>|<ahref="?img=<?=$prev;?>"class="sp">Previous</a><ahref="?img=<?=$next;?>">Next</a>|<ahref="?img=<?=$last;?>">Last</a>
</div>
</div>
</body>
</html>
希望本文所述对大家的php程序设计有所帮助。