Location: PHPKode > scripts > ImageGallery > imagegallery/ImageGallery.php
<?php
//################################################################################
//###									####
//###	TBmnet Image Gallery						####
//###									####
//################################################################################
//###									####
//###	DOCUMENTATION						####
//###									####
//###	This script is nothing but a simple gallery. It can display your images		####
//###	(*.png, *.jpg and *.gif) as slideshow or as thumbnails.			####
//###	Using the GD-library (normaly build-in PHP ) this script can render		####
//###	your pictures with a border and a dropshadow.				####
//###	These generated images are cached in the gallery-folder - so your webserver		####
//###	needs write access in this folder!					####
//###									####
//###	Edit the variables in the config section below for your	needs.			####
//###									####
//###	An extensive documentation is avalibe online on TBmnet.de:			####
//###									####
//###	http://www.tbmnet.de/tbmnet.php?content=php_imagegallery			####
//###									####
//###									####
//###	Copyright (c) 2004 Till Biedermann <hide@address.com>		####
//###									####
//###									####
//###	CHANGES							####
//###									####
//###	2005-01-04							####
//###		- implemented slideshow					####
//###		- implemented thumbnail indexing				####
//###		- prettifyed layout and design					####
//###		- cleaned up the code for release					####
//###									####
//###	2004-012-14							####
//###		- development start						####
//###		- implemented core functions for image manipulation		####
//###									####
//###									####
//###	LICENSE							####
//###									####
//###	This program is free software; you can redistribute it and/or modify		####
//###	it under the terms of the GNU General Public License as published by		####
//###	the Free Software Foundation; either version 2 of the License, or			####
//###	(at your option) any later version.					####
//###									####
//###	This program is distributed in the hope that it will be useful,			####
//###	but WITHOUT ANY WARRANTY; without even the implied warranty of		####
//###	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the	####
//###	GNU General Public License for more details.				####
//###									####
//###	You should have received a copy of the GNU General Public License		####
//###	along with this program; if not, write to the Free Software			####
//###	Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,		####
//###	USA.								####
//###									####
//################################################################################

//################################################################################
//###									####
//###	CONFIGURATION - edit these variables for your needs.			####
//###									####
//###	!!! pay attention to the syntax !!!					####
//###									####
//################################################################################

$width			= 800;
$thumbnails_per_row	= 5;
$thumbnail_indexing	= TRUE;
$thumbnails_per_page	= 20;

$thumbnail_filetype	= "png";	// png or jpg
$slideshow_filetype	= "png";	// png or jpg

$multipleGalleries	= TRUE;
$galleries		= array(	"gallery name 01" => "./img/gallery01",
					"gallery name 02" => "./img/gallery02",
					"gallery name 03" => "./img/gallery03");
$link_original_image	= TRUE;

// delete all generated images after modifying anything below !!!

// slideshowsettings
$image_margin			= 10;
$image_border			= TRUE;
$image_dropShadow		= TRUE;
$image_offset_x			= 1;
$image_offset_y			= 1;
$image_dropShadow_scale		= 0.99;
$image_dropShadow_offset	= 12;
$image_dropShadow_blurRadius	= 10;	// not greater then 46 (because of pixel gaps) and not greater then $dropShadow_offset

// thumbnailsettings
$thumbnail_border		= TRUE;
$thumbnail_dropShadow		= TRUE;
$thumbnail_offset_x		= 0;
$thumbnail_offset_y		= 1;
$thumbnail_dropShadow_scale	= 0.99;
$thumbnail_dropShadow_offset	= 6;
$thumbnail_dropShadow_blurRadius= 6;	// not greater then 46 (because of pixel gaps) and not greater then $dropShadow_offset

$background_color		= array(255, 255, 255);
$border_color			= array(0, 0, 0);
$dropShadow_color		= array(100, 100, 100);	// has to be darker then the background color!!!

//################################################################################
//###									####
//###	CONFIGURATION - ends here						####
//###									####
//###	!!! don't edit anything above, except you know what you are doing !!!		####
//###									####
//################################################################################

$html_background_color = "#".sprintf("%02s", dechex($background_color[0])).sprintf("%02s", dechex($background_color[1])).sprintf("%02s", dechex($background_color[2]));

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	<title>Image Gallery powered by TBmnet.de</title>
	<style type="text/css">
		body	{	font-family:	arial, sans-serif;
				text-align:	center;	// dirty hack for centered page-container in IE5
				color:		#707070;
				background-color:	<?php echo "$html_background_color"; ?>;
				padding-top:	4%;		}
		#page	{	width:		<?php echo "$width"; ?>px;
				margin:		0px auto;
				padding:		10px;
				text-align:	left;
				border:		solid #c0c0c0 1px;	}
		#navigation {	border-bottom:	solid #c0c0c0 1px;
				padding:		10px;		}
		#statusbar {	border-bottom:	solid #c0c0c0 1px;
				padding:		10px;		}
		#img_area {	text-align:	center;
				margin-top:	15px;		}
		#footer	{	border-top:	solid #c0c0c0 1px;
				padding:		10px;
				text-align:	center;		}
		#footer p	{	font-size:		10px;
				color:		#555555;
				font-weight:	bold;		}
		img 	{ 	border:		0px;		}
		p	{	font-size:		12px;
				color:		#777777;
				font-weight:	normal;		}
		a	{	font-weight:	bold;
				color:		#999999;
				text-decoration:	none;		}
	</style>
</head>
<body>
<div id="page">
<?php
	// initialization------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	
	$SCRIPT_NAME	= getenv("SCRIPT_NAME");
	
	if (isset($_GET["gallery"])) 	{ $gallery = $_GET["gallery"]; }
	else				{ $gallery = $galleries[key($galleries)]; }
	if (isset($_GET["view"])) 	{ $view = $_GET["view"]; }
	else				{ $view = "thumbnails"; }

	if (isset($_GET["thumbnail_index"]))	{ $thumbnail_index = $_GET["thumbnail_index"]; }
	else					{ $thumbnail_index = 0; }

	if (isset($_GET["slideshow_index"]))	{ $slideshow_index = $_GET["slideshow_index"]; }
	else					{ $slideshow_index = 0; }
	
	if (!is_dir($gallery)) { die("<br/><br/>ERROR: invalid directory: $gallery"); }
	if (!is_dir($gallery."/.thumbs")) if (!mkdir($gallery."/.thumbs")) { die("<br/><br/>ERROR: can't create thumbnail directory in $gallery"); }
	if (!is_dir($gallery."/.modified")) if (!mkdir($gallery."/.modified")) { die("<br/><br/>ERROR: can't create directory for modified images in $gallery"); }
	
	$thumbnail_size = intval($width/$thumbnails_per_row);
	
	// functions------------------------------------------------------------------------------------------------------------------------------------------------------------------------

	function scale_image($img, $factor) {
		$temp = imagecreatetruecolor(imagesx($img)*$factor, imagesy($img)*$factor);
		imagecopyresized($temp, $img, 0, 0, 0, 0, imagesx($img)*$factor, imagesy($img)*$factor, imagesx($img), imagesy($img));
		return $temp;
		imagedestroy($temp);
	}
	
	function draw_image_border($img) {
		imagerectangle($img, 0, 0, imagesx($img)-1, imagesy($img)-1, imagecolorresolve($img, $GLOBALS["border_color"][0], $GLOBALS["border_color"][1], $GLOBALS["border_color"][2]));
		return $img; 
	}

	function draw_dropShadow($img, $dropShadow_scale, $dropShadow_offset, $dropShadow_blurRadius, $background_color, $dropShadow_color, $image_offset_x, $image_offset_y) {
		
		$dropShadow_width = intval(imagesx($img)*$dropShadow_scale);
		$dropShadow_height = intval(imagesy($img)*$dropShadow_scale);
		
		$img_dropShadow = imagecreatetruecolor($dropShadow_width+$dropShadow_offset+$dropShadow_blurRadius, $dropShadow_height+$dropShadow_offset+$dropShadow_blurRadius);
		
		// determine drop shadow color gradient
		
		$gradient_steps = array();		// RGB array with the gradient steps
		$temp_color = array();			// temporary RGB array
		$dropShadowGradientColors = array();	// integer array with all gradient colors from dark to bright
		
		for ($i=0; $i<=2; $i++) {
			$gradient_steps[$i] = ($background_color[$i]-$dropShadow_color[$i])/$dropShadow_blurRadius;
		}
		
		$temp_color[0] = $dropShadow_color[0]+$gradient_steps[0]/2;
		$temp_color[1] = $dropShadow_color[1]+$gradient_steps[1]/2;
		$temp_color[2] = $dropShadow_color[2]+$gradient_steps[2]/2;
		$dropShadowGradientColors[0] = imagecolorresolve($img_dropShadow, $temp_color[0], $temp_color[1], $temp_color[2]);
		
		for ($i=1; $i<$dropShadow_blurRadius; $i++) {
			$temp_color[0] = $temp_color[0]+$gradient_steps[0];
			$temp_color[1] = $temp_color[1]+$gradient_steps[1];
			$temp_color[2] = $temp_color[2]+$gradient_steps[2];
			$dropShadowGradientColors[$i] = imagecolorresolve($img_dropShadow, $temp_color[0], $temp_color[1], $temp_color[2]);
		}
		
		// draw drop shadow
		
		imagefill($img_dropShadow, 0, 0, imagecolorresolve($img_dropShadow, $background_color[0], $background_color[1], $background_color[2]));
		imagefilledrectangle($img_dropShadow, $dropShadow_offset+1, $dropShadow_offset+1, $dropShadow_offset+$dropShadow_width-1, $dropShadow_offset+$dropShadow_height-1, imagecolorresolve($img, $dropShadow_color[0], $dropShadow_color[1], $dropShadow_color[2]));
		
		for ($i=0; $i<$dropShadow_blurRadius; $i++) {
			// borders:  top / left / right / bottom
			imageline($img_dropShadow, $dropShadow_offset, $dropShadow_offset-$i, $dropShadow_offset+$dropShadow_width, $dropShadow_offset-$i, $dropShadowGradientColors[$i]);
			imageline($img_dropShadow, $dropShadow_offset-$i, $dropShadow_offset, $dropShadow_offset-$i, $dropShadow_offset+$dropShadow_height, $dropShadowGradientColors[$i]);
			imageline($img_dropShadow, $dropShadow_offset+$dropShadow_width+$i, $dropShadow_offset, $dropShadow_offset+$dropShadow_width+$i, $dropShadow_offset+$dropShadow_height, $dropShadowGradientColors[$i]);
			imageline($img_dropShadow, $dropShadow_offset, $dropShadow_offset+$dropShadow_height+$i, $dropShadow_offset+$dropShadow_width, $dropShadow_offset+$dropShadow_height+$i, $dropShadowGradientColors[$i]);
			// corners: left top / right top / left bottom / right bottom
			imagearc($img_dropShadow, $dropShadow_offset+$dropShadow_blurRadius-$i, $dropShadow_offset+$dropShadow_blurRadius-$i, 2*$dropShadow_blurRadius, 2*$dropShadow_blurRadius, 180, 270, $dropShadowGradientColors[$i]);
			imagearc($img_dropShadow, $dropShadow_offset-$dropShadow_blurRadius+$i+$dropShadow_width, $dropShadow_offset+$dropShadow_blurRadius-$i, 2*$dropShadow_blurRadius, 2*$dropShadow_blurRadius, 270, 0, $dropShadowGradientColors[$i]);
			imagearc($img_dropShadow, $dropShadow_offset+$dropShadow_blurRadius-$i, $dropShadow_offset-$dropShadow_blurRadius+$i+$dropShadow_height, 2*$dropShadow_blurRadius, 2*$dropShadow_blurRadius, 90,180, $dropShadowGradientColors[$i]);
			imagearc($img_dropShadow, $dropShadow_offset-$dropShadow_blurRadius+$i+$dropShadow_width, $dropShadow_offset-$dropShadow_blurRadius+$i+$dropShadow_height, 2*$dropShadow_blurRadius, 2*$dropShadow_blurRadius, 0, 90, $dropShadowGradientColors[$i]);
			// redraw all corners enlarged by 1 px to prevent pixel gaps
			imagearc($img_dropShadow, $dropShadow_offset+$dropShadow_blurRadius-$i, $dropShadow_offset+$dropShadow_blurRadius-$i, 2*$dropShadow_blurRadius+1, 2*$dropShadow_blurRadius+1, 180, 270, $dropShadowGradientColors[$i]);
			imagearc($img_dropShadow, $dropShadow_offset-$dropShadow_blurRadius+$i+$dropShadow_width, $dropShadow_offset+$dropShadow_blurRadius-$i, 2*$dropShadow_blurRadius+1, 2*$dropShadow_blurRadius+1, 270, 0, $dropShadowGradientColors[$i]);
			imagearc($img_dropShadow, $dropShadow_offset+$dropShadow_blurRadius-$i, $dropShadow_offset-$dropShadow_blurRadius+$i+$dropShadow_height, 2*$dropShadow_blurRadius+1, 2*$dropShadow_blurRadius+1, 90,180, $dropShadowGradientColors[$i]);
			imagearc($img_dropShadow, $dropShadow_offset-$dropShadow_blurRadius+$i+$dropShadow_width, $dropShadow_offset-$dropShadow_blurRadius+$i+$dropShadow_height, 2*$dropShadow_blurRadius+1, 2*$dropShadow_blurRadius+1, 0, 90, $dropShadowGradientColors[$i]);
		}
		
		imagecopy($img_dropShadow, $img, $image_offset_x, $image_offset_y, 0, 0, imagesx($img), imagesy($img));
		
		return $img_dropShadow;
		imagedestroy($img_dropShadow);
	}

	function create_thumbnail($image) {

		$thumbnail_size=$GLOBALS["thumbnail_size"];
		
		$image_properties=getimagesize($image);
		switch ($image_properties[2]) {
			case 1: $thumb = imagecreatefromgif($image);break;
			case 2: $thumb = imagecreatefromjpeg($image);break;
			case 3: $thumb = imagecreatefrompng($image);break;
			default: die("<br/><br/>unknown file type: $image");
		}
		
		$temp = imagecreatetruecolor($thumbnail_size, $thumbnail_size);
		imagefill($temp, 0, 0, imagecolorresolve($temp, $GLOBALS["background_color"][0], $GLOBALS["background_color"][1], $GLOBALS["background_color"][2]));
		
		if ($image_properties[0]>$image_properties[1]) {
			$thumb = scale_image($thumb, (1/($image_properties[0]/$thumbnail_size)*0.93)); // *0.93 is an ugly hack to make image in the thumb smaller (reason: $thumbnail_size was first the size of the thumb-image, but now it is the size of the hole thumb, including dropshadow)
			if ($GLOBALS["thumbnail_border"]) { $thumb = draw_image_border($thumb); }
			if ($GLOBALS["thumbnail_dropShadow"]) { $thumb = draw_dropShadow($thumb, $GLOBALS["thumbnail_dropShadow_scale"], $GLOBALS["thumbnail_dropShadow_offset"], $GLOBALS["thumbnail_dropShadow_blurRadius"], $GLOBALS["background_color"], $GLOBALS["dropShadow_color"], $GLOBALS["thumbnail_offset_x"], $GLOBALS["thumbnail_offset_y"]); }
			imagecopy($temp, $thumb, 1, $thumbnail_size/2-imagesy($thumb)/2, 0, 0, imagesx($thumb), imagesy($thumb));
		}
		else {
			$thumb = scale_image($thumb, (1/($image_properties[1]/$thumbnail_size)*0.93)); // *0.93 is an ugly hack to make image in the thumb smaller (reason: $thumbnail_size was first the size of the thumb-image, but now it is the size of the hole thumb, including dropshadow)
			if ($GLOBALS["thumbnail_border"]) { $thumb = draw_image_border($thumb); }
			if ($GLOBALS["thumbnail_dropShadow"]) { $thumb = draw_dropShadow($thumb, $GLOBALS["thumbnail_dropShadow_scale"], $GLOBALS["thumbnail_dropShadow_offset"], $GLOBALS["thumbnail_dropShadow_blurRadius"], $GLOBALS["background_color"], $GLOBALS["dropShadow_color"], $GLOBALS["thumbnail_offset_x"], $GLOBALS["thumbnail_offset_y"]); }
			imagecopy($temp, $thumb, $thumbnail_size/2-imagesx($thumb)/2, 1, 0, 0, imagesx($thumb), imagesy($thumb));
		}
		
		switch ($GLOBALS["thumbnail_filetype"]) {
			case "png": {
				imagepng($temp, "./.thumbs/$thumbnail_size"."_thumb_".$image.".".$GLOBALS["thumbnail_filetype"]);
			}
			break;
			case "jpg": {
				imagejpeg($temp, "./.thumbs/$thumbnail_size"."_thumb_".$image.".".$GLOBALS["thumbnail_filetype"]);
			}
			break;
			default: {
				die("<br/><br/>ERROR: unsupported target filetype for thumbnails: ".$GLOBALS["thumbnail_filetype"]);
			}
		}
		
		imagedestroy($thumb);
		imagedestroy($temp);
		return TRUE;
	}

	function create_slideshow_item($image) {
		
		$image_properties=getimagesize($image);
		switch ($image_properties[2]) {
			case 1: $img = imagecreatefromgif($image);break;
			case 2: $img = imagecreatefromjpeg($image);break;
			case 3: $img = imagecreatefrompng($image);break;
			default: die("<br/><br/>unknown file type: $image");
		}
		
		if ($image_properties[0]>=($GLOBALS["width"]-2*$GLOBALS["image_margin"])) {
			$img = scale_image($img, ($GLOBALS["width"]-2*$GLOBALS["image_margin"])/$image_properties[0]);
			if ($GLOBALS["image_border"]) { $img = draw_image_border($img); }
			if ($GLOBALS["image_dropShadow"]) { $img = draw_dropShadow($img, $GLOBALS["image_dropShadow_scale"], $GLOBALS["image_dropShadow_offset"], $GLOBALS["image_dropShadow_blurRadius"], $GLOBALS["background_color"], $GLOBALS["dropShadow_color"], $GLOBALS["image_offset_x"], $GLOBALS["image_offset_y"]); }
		}
		else {
			if ($GLOBALS["image_border"]) { $img = draw_image_border($img); }
			if ($GLOBALS["image_dropShadow"]) { $img = draw_dropShadow($img, $GLOBALS["image_dropShadow_scale"], $GLOBALS["image_dropShadow_offset"], $GLOBALS["image_dropShadow_blurRadius"], $GLOBALS["background_color"], $GLOBALS["dropShadow_color"], $GLOBALS["image_offset_x"], $GLOBALS["image_offset_y"]); }
		}
		
		switch ($GLOBALS["slideshow_filetype"]) {
			case "png": {
				imagepng($img, "./.modified/".$GLOBALS["width"]."_mod_".$image.".".$GLOBALS["slideshow_filetype"]);
			}
			break;
			case "jpg": {
				imagejpeg($img, "./.modified/".$GLOBALS["width"]."_mod_".$image.".".$GLOBALS["slideshow_filetype"]);
			}
			break;
			default: {
				die("<br/><br/>ERROR: unsupported target filetype for thumbnails: ".$GLOBALS["slideshow_filetype"]);
			}
		}
		
		imagedestroy($img);
		return TRUE;
	}

	// main------------------------------------------------------------------------------------------------------------------------------------------------------------------------

	$gallery_name = key($galleries);
	
	// navigation------------------------------------------------------------------------------------------------
	
	echo "<div id=\"navigation\">";
	
	if ($multipleGalleries) {
		foreach ($galleries as $entry) {
			echo "<a href=\"$SCRIPT_NAME?gallery=$entry\" title=\"show gallery ".key($galleries)."\">".key($galleries)."</a>&nbsp;&nbsp;|&nbsp;&nbsp;";
			if ($gallery==$entry) { $gallery_name = key($galleries); }
			next($galleries);
		}
	}

	if ($view=="thumbnails")	{ echo "&nbsp;&nbsp;<a href=\"$SCRIPT_NAME?view=slideshow&amp;gallery=$gallery\" title=\"show gallery as slide show\">Slide Show</a>"; }
	else				{ echo "&nbsp;&nbsp;<a href=\"$SCRIPT_NAME?view=thumbnails&amp;gallery=$gallery\" title=\"show gallery overview\">Overview</a>"; }
	
	echo "</div>";

	// generate images array------------------------------------------------------------------------------------------------

	chdir($gallery);
	$directory = dir("./");	
	$images_array = array();
	while ($file = $directory->read()) {
		if (is_file($file) and in_array(strtolower(substr($file, -4)), array(".png", ".jpg", ".gif"))) {
			$images_array[] = $file;
		}
	}
	$directory->close();
	reset($images_array);

	$images_count = count($images_array);
	sort($images_array);
	
	// generate all for this gallery-----------------------------------------------------------------------------------------------
	
	if ($_GET["action"]=="generate_all") {
		$count1=0;
		$count2=0;
		echo "<p>";
		foreach ($images_array as $image) {
			if (!is_file("./.thumbs/$thumbnail_size"."_thumb_".$image.".".$thumbnail_filetype)) {
				create_thumbnail($image);
				echo "generated thumbnail for <i>$image</i><br/>";
				$count1++;
			}
			if (!is_file("./.modified/$width"."_mod_".$image.".".$slideshow_filetype)) {
				create_slideshow_item($image);
				echo "generated slideshow picture for <i>$image</i><br/>";
				$count2++;
			}
		}
		echo "<br/><br/>generated <b>$count1</b> thumbnails and <b>$count2</b> slideshow pictures for gallery <i>$gallery_name</i></p>";
	}
	
	// generate gallery------------------------------------------------------------------------------------------------

	switch ($view) {
		case "thumbnails": {
			
			echo "<div id=\"statusbar\">";
			echo "<p>$images_count Images in gallery <b>$gallery_name</b></p>";
			if ($thumbnail_indexing) {
				$images_array = array_chunk($images_array, $thumbnails_per_page);
				$images_array = $images_array[$thumbnail_index];
				if ($images_count>$thumbnails_per_page) {
					echo "<p>";
					if ($thumbnail_index>0) { echo "<a href=\"$SCRIPT_NAME?view=thumbnails&amp;gallery=$gallery&amp;thumbnail_index=".($thumbnail_index-1)."\" title=\"previous\">&lt;&lt; prev&nbsp;&nbsp;</a>"; }
					echo ($thumbnail_index+1)."/".ceil($images_count/$thumbnails_per_page)." &nbsp;";
					if ($thumbnail_index<(ceil($images_count/$thumbnails_per_page)-1)) { echo "<a href=\"$SCRIPT_NAME?view=thumbnails&amp;gallery=$gallery&amp;thumbnail_index=".($thumbnail_index+1)."\" title=\"next\">next &gt;&gt;</a>"; }
					echo "</p>";
				}
			}
			echo "</div>";
			
			echo "<div id=\"img_area\">";
			$i = 1;
			$row = 0;
			foreach ($images_array as $image) {
				
				if (!is_file("./.thumbs/$thumbnail_size"."_thumb_".$image.".".$thumbnail_filetype)) { create_thumbnail($image); }
				
				echo "<a href=\"$SCRIPT_NAME?view=slideshow&amp;gallery=$gallery&amp;slideshow_index=".($i-1+$row*$thumbnails_per_row+$thumbnail_index*$thumbnails_per_page)."\"><img src=\"$gallery/.thumbs/$thumbnail_size"."_thumb_".$image.".".$thumbnail_filetype."\" title=\"$image\" alt=\"thumbnail\" /></a>";
				
				if ($i==$thumbnails_per_row) {
					$i = 1;
					echo "<br/>";
					$row++;
				}
				else { $i++; }
				next($images_array);
			}
		}
		break;
		case "slideshow": {
			
			echo "<div id=\"statusbar\"><p>";
			if ($slideshow_index>0) { echo "<a href=\"$SCRIPT_NAME?view=slideshow&amp;gallery=$gallery&amp;slideshow_index=".($slideshow_index-1)."\" title=\"previous\">&lt;&lt; prev&nbsp;&nbsp;</a>"; }
			echo ($slideshow_index+1)."/$images_count &nbsp;";
			if ($slideshow_index<($images_count-1)) { echo "<a href=\"$SCRIPT_NAME?view=slideshow&amp;gallery=$gallery&amp;slideshow_index=".($slideshow_index+1)."\" title=\"next\">next &gt;&gt;</a>"; }
			echo "</p></div>";
			
			echo "<div id=\"img_area\">";
			
			if (!is_file("./.modified/$width"."_mod_".$images_array[$slideshow_index].".".$slideshow_filetype)) { create_slideshow_item($images_array[$slideshow_index]); }
			
			if ($link_original_image) {
				echo "<a href=\"$gallery/".$images_array[$slideshow_index]."\"><img src=\"$gallery/.modified/$width"."_mod_".$images_array[$slideshow_index].".".$slideshow_filetype."\" title=\"".$images_array[$slideshow_index]."\" alt=\"".$images_array[$slideshow_index]."\" /></a>";
			}
			else {
				echo "<img src=\"$gallery/.modified/$width"."_mod_".$images_array[$slideshow_index].".".$slideshow_filetype."\" title=\"".$images_array[$slideshow_index]."\" alt=\"".$images_array[$slideshow_index]."\" />";
			}
		}
		break;
	}
	echo "</div>";
?>
<div id="footer">
<p>powered by <a href="http://www.tbmnet.de" title="tbmnet.de">TBmnet.de</a><br/></p>
<a href="http://validator.w3.org/check/referer"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAAAPCAIAAAD8q9/YAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAAsSAAALEgHS3X78AAAAFnRFWHRDcmVhdGlvbiBUaW1lADAzLzMxLzAzSSCx8gAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAC8UlEQVR4nGNMS0tjGEmAhYGBYebMmQPtDDqB9PR0Fuqa2NVfRV0DqQjKCtsYIDEMB5tOPX796Vuyi/r77wyLd1/xsVBREuNgYGBYe+zBmsO3eXnYWRj+c7CzdqZY/fryaeasOerq6iamptw8PDxcXAPjCdIBEzLnwcuPVdP3MzAw/Pn3d9Oxe/N3XmZgYHjy/lf1jAPHLz5mY2eZPvPg9sN3mRgYmpsaly1bNnPmzJzs7FcvXw6M28kCKB72sVB+9+XnnmuvRLmZmf8zLNt0gYGB4cyNp49ef5qQ62qjKSWnLd2f737zypUrV6719PRUVFSoq6vLyshgNRqShNDYWBkQRIwurLZgymIVxOJhJVFOR2P5OavOff3DcPrG00fPPtx89f387ddOJoqKckI5deu5WVk8jMTu3LoRFhHh4OBgZWXV1NTEysqK1eiu/iqIrWWFbXjyNkQKWQFcFy4tmNqJEYQA9EIrwkkzpXuH3mYZNk52awuxkpn7f/7662EoJy/KHeFtMHX9+coFZ6PMtCVEhCDqmZiYMMxEsRjTtwR9AtdFpJ9JAujOdTFS/P/tZ1P/jiB7tSgP/S1LT9y9+cLJSEGAjWFCkWNtsk3Hgv0sAvKiYuLEmI7V3V39VQQLc9qV9ugelhFiczJV/nn/bYKHro2WJAMbkyAP+18mhnffGFgYGEw1pBje/Th+9iJc/dOnT589e4bVaHjcUiWucGVL5PSPluexqmdMS0tDa3jM2XGzd/mp6wtjP/1iiGvZaqopIS7E0zj7ULSX/qxNZ+SkRKalaN29ckZIWPT58+fz58+fP3++mpoaRO8gr4exNzw8LJTefPrOwMDAx8aQ4qvPwMDgYyrz5PXHBdsv6alJTM9315Tm/v357dSpU1+/fl1eXg737ZAAWDwsI8BaEWYAYfuYQqucuhizcEdtKVFufjYGBgYGe3t7ZWVlJiYmKSkpejmVOoDYpiUTA4OmNDeyiAy26pcW5Sp1AeNI6y0BAPLiLdkcUqfnAAAAAElFTkSuQmCC" alt="valid XHTML 1.1" title="valid XHTML 1.1" /></a>&nbsp;&nbsp;
<a href="http://validator.w3.org/check/referer"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAAAPCAIAAAD8q9/YAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAAsSAAALEgHS3X78AAAAFnRFWHRDcmVhdGlvbiBUaW1lADAzLzMxLzAzSSCx8gAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAC8klEQVR4nGNMS0tjGEmAhYGBYebMmQPtDDqB9PR0Fuqa2NVfRV0DqQjKCtsYIDEMB5tOPX796Vuyi/r77wyLd1/xsVBREuNgYGBYe+zBmsO3eXnYWRj+c7CzdqZY/fryaeasOerq6iamptw8PDxcXAPjCdIBEzLnwcuPVdP3MzAw/Pn3d9Oxe/N3XmZgYHjy/lf1jAPHLz5mY2eZPvPg9sN3mRgYmpsaly1bNnPmzJzs7FcvXw6M28kCKDHsY6FcPGXvnmuvXLTEmP8zLNt0oTnW9MyNp49ef1pWF/jj39/N2tL9+e43r1y5cuVaT08PGxvbtm3bZGVkcJkOSUXI6RwigiyIKYJHMeUAxcNKopyOxvJzVp2zrPE4fePp5zdfbr76fv72aycTRUU5Iee4WWLSQh5GYpvWHQqLiHBwcGBgYLCwsGBiYsJqdFlhG8ShmAxMNVgBcqBQy8/ohVaEk2ZK9w69zTJsnOzWFmIlM/f//PXXw1BOXpQ7wttg6vrzlQvORplpS4gIQdTj8i1Wd3f1V6HFOaYIGsAvSwZAd66LkeL/bz+b+ncE2atFeehvWXri7s0XTkYKAmwME4oca5NtOhbsZxGQFxUTJ94OeMpkYGDo6q+CexKXCLJGiCyJnsIH0GNYRojNyVR53+ozCR66PGwsDGxMgjzsf5kY3n1jEOJiMNWQYnj34/jZi5pSlhD1T58+ZWRklJKSwjQaM/ZIysBEKiAVoHuYiYEh0k3n2dtvZor8n34x+AeYmmpKnL/+ImD2qmgv/VmbzujbqGlI8y5etEBIWPT58+fz58+fP38+LtPRXInpaPzeoEWtjqXh4WGh9ObTdwYGBj42hhRffQYGBh9TmSevPy7YfklPTWJ6vrumNPfvz2+nTp36+vXr8vJyNTU1qjuLdgCLh2UEWCvCDCBsH1NolVMXYxbuqC0lys3PxsDAwGBvb6+srMzExIQ1MQ9mQGzTkomBQVOaG1lEBlv1i7XsGVSAcaT1lgAqmCeXDMPATwAAAABJRU5ErkJggg==" alt="valid CSS2" title="valid CSS2" /></a>
</div>
</div>
</body>
</html>
Return current item: ImageGallery