Image browser
<?
// Configuration Variables
// ======================
//
// scale : weather or not to scale the large img to the max height/width if it
// does not exceed the max height/width limits
// 0=don't scale 1=scale
// maxwidth : the maximum allowed width of the large picture
// maxheight : the maximum allowed height of the large picture
// thumbmaxw : the maximum allowed width of the thumbnail
// thumbmaxh : the maximum allowed height of the thumbnail
// imgperpage : the number of thumbnail images displayed
// its best to give this a value that is a multiple of imgperrow
// imgperrow : the number of thumbnail images per row
// pgperrow : the number of page links per row
// typelist : array that contains the imagetypes shown by the browser
// currentdir : default the directory where this php file resides,
// can be replaced by any directory of your choice
// title : enter the title of your page here
// home : enter path to your home directory or any other desired directory
// (where the home link goes to)
// this_page : the name of this file, $_SERVER['PHP_SELF'] should work, but if it dosen't
// just use the file name; this is where all the links to this page go
// captionext : filename extension placed on caption file with same name
// as image. (ie - <image>.<ext>.<captionext>)
// example: image file sunrise.jpg would use the caption
// file sunrise.jpg.txt with the default captionext
// caption : default caption to place under files if no caption file
// exists
// stylesheet : enter the path to your stylesheet here
// you may enter just '' to use the default(will embed it in the html)
// you may also enter 'none' to have no style sheet
// the stylesheet should have these classes:
//
// .imag { border-style : solid;
// border-color: blue;
// border-width : 1px;}
// .thumb { border-style : solid;
// border-color: #999999;
// border-width : 2px;}
// A:link { color: #999999;
// text-decoration : none; }
// A:visited { color: #999999;
// text-decoration : none; }
// A:hover { color:blue; }
// any of these classses can be adjusted to your needs
//
//
// USAGE:
// to browse through the images use the back and forward images
// click on one of the thumbnails
// or use one of the pagelinks to go directly to another set of images
// clicking on the large image will give you the full image
//---Variables---
$scale = 0;
$maxwidth = 640;
$maxheight = 480;
$thumbmaxw = 50;
$thumbmaxh = 50;
$imgperpage = 10;
$imgperrow = 5;
$pgperrow = 10;
$currentdir = getcwd ();
$typelist = array("jpg","jpeg","gif","png","JPG");
$imagelist = array();
$title = "Pics";
$stylesheet = '' ;
$home = "{$_SERVER['PHP_SELF']}";
$this_page = "{$_SERVER['PHP_SELF']}";
$caption = "";
$captionext = "txt";
//--- ind is put to zero when the script is first called uppon---
if(!isset($_GET['ind']))
$_GET['ind'] = 0;
$index = $_GET['ind'];
//---the following code iterates through the directory and puts any image found in the imagelist array---
$dp=opendir($currentdir);
while ( false != ( $file=readdir($dp) ) ) {
if (is_file($file) && $file!="." && $file!=".."){
$extention = explode(".",$file);
$extfield = count($extention)-1;
$extention = $extention[$extfield];
if( in_array($extention,$typelist) ){
array_push ($imagelist,$file);
}
}
}
?>
<html >
<head>
<title><?= $title ?></title>
<?
if ($stylesheet == ''){
//--insert the default style sheet into html if none specified
echo '<style type="text/css">'
.'.imag { border-style : solid;'
.'border-color: blue;'
.'border-width : 1px;}'
.'.thumb { border-style : solid;'
.'border-color: #999999;'
.'border-width : 2px;}'
.'A:link { color: #999999;'
.'text-decoration : none; }'
.'A:visited { color: #999999;'
.'text-decoration : none; }'
.'A:hover { color:blue; }'
.'</style>';
} elseif ($stylesheet == 'none') {
//--no style sheet if that is what you want
} else {
echo "<link rel=\"STYLESHEET\" href=\"$stylesheet\" />";
}
?>
</head>
<body>
<table align="center" border="0">
<tr>
<td>
<? if($index-1 >= 0) {?>
<a href='<?= $this_page ?>?ind=<?= $index-1 ?>'>[ prev ]</a>
<? } ?>
</td>
<td>
<?
//--- This is where the large pictures are resized so that they maintain ratio---
$sizeee = getimagesize ("$imagelist[$index]");
$imgwidth = $sizeee[0];
$imgheight = $sizeee[1];
if ($scale == 1 || $imgwidth > $maxwidth || $imgheight > $maxheight) { // decide if img needs to be scaled
$newwidth = $imgwidth/($imgheight/$maxheight);
$newheight = $imgheight/($imgwidth/$maxwidth);
if ($imgwidth < $imgheight) {
if ($newwidth > $maxwidth)
{
?>
<a href="<?= $imagelist[$index] ?>" target="_blank">
<img src="<?= $imagelist[$index] ?>" width="<?= $maxwidth ?>" height="<?= $newheight ?>" alt="" />
</a>
<?
} else {
?>
<a href="<?= $imagelist[$index] ?>" target="_blank">
<img src="<?= $imagelist[$index] ?>" width="<?= $newwidth ?>" height="<?= $maxheight ?>" alt="" />
</a>
<?
}
} else {
if ($newhight > $maxheight)
{
?>
<a href="<?= $imagelist[$index] ?>" target="_blank">
<img src="<?= $imagelist[$index] ?>" width="<?= $newwidth ?>" height="<?= $maxheight ?>" alt="" />
</a>
<?
} else {
?>
<a href="<?= $imagelist[$index] ?>" target="_blank">
<img src="<?= $imagelist[$index] ?>" width="<?= $maxwidth ?>" height="<?= $newheight ?>" alt="" />
</a>
<?
}
}
} else { ?>
<a href="<?= $imagelist[$index] ?>" target="_blank">
<img src="<?= $imagelist[$index] ?>" width="<?= $imgwidth ?>" height="<?= $imgheight ?>" alt="" />
</a>
<? }
?>
</td>
<td>
<? if($index+1 < count($imagelist) ) {?>
<a href="<?= $this_page ?>?ind=<?= $index+1 ?>">[ next ]</a>
<? } ?>
</td>
</tr>
<tr>
<td>
</td>
<td>
<center><?
if (file_exists ($imagelist[$index]. "." . $captionext) &&
is_file ($imagelist[$index]. "." . $captionext) &&
!is_dir ($imagelist[$index]. "." . $captionext))
include $imagelist[$index]. "." . $captionext;
else
echo $caption; ?>
</center>
</td>
<td>
</td>
</tr>
</table>
<table align="center">
<tr><td></td>
<?
//---this code generates the thumbnails based on the configuration settings---
$nrpages = ceil( count($imagelist)/$imgperpage );
for($j=0;$j<$nrpages;$j++)
{
if( $index >= ($j*$imgperpage) && ($index < (($j+1) * $imgperpage)) ) {
for($i=($j*$imgperpage);$i<(($j+1) * $imgperpage);$i++) {
if(($i%$imgperrow == 0) && ($i > 0)) { ?>
</tr>
<tr>
<? }
if($i <count($imagelist) ) {
$path = "$this_page?ind=".$i; ?>
<td>
<?
//--- This is where the thumbnails are resized so that they maintain ratio---
$sizeee = getimagesize ("$imagelist[$i]");
$imgwidth = $sizeee[0];
$imgheight = $sizeee[1];
$newthumbw = $imgwidth/($imgheight/$thumbmaxh);
$newthumbh = $imgheight/($imgwidth/$thumbmaxw);
if ($imgwidth < $imgheight) {
if ($newthumbw > $thumbmaxw)
{
?>
<a href="<?= $path ?>">
<img src="<?= $imagelist[$i] ?>" width="<?= $thumbmaxw ?>" height="<?= $newthumbh ?>" alt="" />
</a>
<?
} else {
?>
<a href="<?= $path ?>">
<img src="<?= $imagelist[$i] ?>" width="<?= $newthumbw ?>" height="<?= $thumbmaxh ?>" alt="" />
</a>
<?
}
} else {
if ($newthumbh > $thumbmaxh)
{
?>
<a href="<?= $path ?>">
<img src="<?= $imagelist[$i] ?>" width="<?= $newthumbw ?>" height="<?= $thumbmaxh ?>" />
</a>
<?
} else {
?>
<a href="<?= $path ?>">
<img src="<?= $imagelist[$i] ?>" width="<?= $thumbmaxw ?>" height="<?= $newthumbh ?>" alt="" />
</a>
<?
}
}
?>
</td>
<? }
}
}
}
?>
</tr>
</table>
<br />
<center>
<?
//---this code generates links based on the configuration settings---
//---only puts $pgperrow page links per row to make cleaner---
for($j=0;$j<$nrpages;$j++) {
if(($j%$pgperrow == 0) && ($j > 0)) { ?>
<br />
<? } ?>
<a href="<?= $this_page ?>?ind=<?= ($j*$imgperpage) ?>">[page <?= ($j+1) ?>]</a>
<? } ?>
</center>
<center><a href="<?= $home ?>">[ home ]</a></center>
</body>
</html>