Scripts
Automatisch Fotoalbum V3
Dus je wilt je fotoverzameling delen met de wereld maar je hebt geen zin in het gebruik van onhandige programma's? Laat PHP het werk voor je doen! Gooi dit bestand ergens neer en maak in dezelfde directory een map fotoalbum. Gooi in die map al je fotos en de rest gaat automatisch. Zodra iemand een foto bekijkt die nog niet gethumbnailed is word dat op dat moment gedaan. * Iets logischer code * Moet ook op linux servers geen problemen meer geven * Fotonaam in de URL * Geeft wat meer mogelijkheden (volgende/vorige foto ipv een knop)
automatisch-fotoalbum-v3
<?php
$map = 'fotoalbum';
$afbeeldingen = array();
$hoogte_klein = 112;
$breedte_klein = 150;
$hoogte_groot = 400;
$breedte_groot = 700;
$perpagina = 12;
if(isset($_GET['album']) && !empty($_GET['album']))
{
$tmp = explode('/',$_GET['album']);
if($tmp[0] == $map)
{
$map = str_replace(array('.', '\\', ':'), '', $_GET['album']);
}
}
if(isset($_GET['paginanr']) && !empty($_GET['paginanr']) && ctype_digit($_GET['paginanr']))
{
$paginanr = $_GET['paginanr'];
}else{
$paginanr = 1;
}
if(isset($_GET['afbeelding']) && !empty($_GET['afbeelding']))
{
$afbeelding = $_GET['afbeelding'];
}else{
$afbeelding = NULL;
}
function thumbnail($afbeelding, $type)
{
$map = $afbeelding['dirname'];
$bestandsnaam = $afbeelding['basename'];
list($type, $hoogte, $breedte) = $type;
list($breedte_origineel, $hoogte_origineel, $extensie) = getimagesize($map.'/'.$bestandsnaam);
if(!is_dir($map.'/thumbs/'))
{
mkdir($map.'/thumbs/', 0777);
chmod($map.'/thumbs/', 0777);
}
if (($breedte_origineel < $hoogte_origineel) && ($breedte > $hoogte))
{
$breedte = ($hoogte / $hoogte_origineel) * $breedte_origineel;
}else{
$hoogte = ($breedte / $breedte_origineel) * $hoogte_origineel;
}
$afbeelding = imagecreatetruecolor($breedte, $hoogte);
switch($extensie)
{
case 1:
//gif
$afbeelding_origineel = imagecreatefromgif($map.'/'.$bestandsnaam);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
imagegif($afbeelding, $map.'/thumbs/'.$type.'_'.$bestandsnaam);
break;
case 2:
//jpg
$afbeelding_origineel = imagecreatefromjpeg($map.'/'.$bestandsnaam);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
imagejpeg($afbeelding, $map.'/thumbs/'.$type.'_'.$bestandsnaam, 80);
break;
case 3:
//png
$afbeelding_origineel = imagecreatefrompng($map.'/'.$bestandsnaam);
$background = imagecolorallocate($afbeelding, 0, 0, 0);
imagecolortransparent($afbeelding, $background); // make the new temp image all transparent
imagealphablending($afbeelding, false); // turn off the alpha blending to keep the alpha channel
imagesavealpha($afbeelding, true);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
imagepng($afbeelding, $map.'/thumbs/'.$type.'_'.$bestandsnaam);
break;
}
chmod($map.'/thumbs/'.$type.'_'.$bestandsnaam, 0777);
return TRUE;
}
$tmp = NULL;
foreach(explode('/',$map) as $tmp2)
{
echo '>> <a href="?pagina=fotoalbum&album='.$tmp.$tmp2.'">'.ucfirst($tmp2).'</a> ';
$tmp = $tmp.$tmp2.'/';
}
echo '<br><br>'.PHP_EOL;
if(!$bestanden = glob($map.'/*.*'))
{
$bestanden = array();
}
foreach($bestanden as $bestand)
{
$gegevens = getimagesize($bestand);
$extensie = $gegevens['mime'];
if($extensie == 'image/jpeg' || $extensie == 'image/gif' || $extensie == 'image/png')
{
$afbeeldingen[] = $bestand;
}
}
$aantalfotos = count($afbeeldingen);
if(isset($afbeelding))
{
foreach($afbeeldingen as $id => $naam)
{
if(basename($naam) == $afbeelding)
{
$fotonr = $id;
}
}
if(isset($fotonr))
{
$afbeelding = pathinfo($afbeeldingen[$fotonr]);
if($fotonr > 0)
{
$vorige_afbeelding = pathinfo($afbeeldingen[$fotonr-1]);
echo '<a href="?pagina=fotoalbum&album='.$map.'&afbeelding='.$vorige_afbeelding['basename'].'" title="Ga naar foto '.$vorige_afbeelding['basename'].'"><< Vorige</a>';
}else{
echo '<< Vorige';
}
echo ' Foto '.($fotonr +1).' van '.$aantalfotos.' ';
if($fotonr < $aantalfotos -1)
{
$volgende_afbeelding = pathinfo($afbeeldingen[$fotonr+1]);
echo '<a href="?pagina=fotoalbum&album='.$map.'&afbeelding='.$volgende_afbeelding['basename'].'" title="Ga naar foto '.$volgende_afbeelding['basename'].'">Volgende >></a><br>';
}else{
echo 'Volgende >><br>'.PHP_EOL;
}
if(!file_exists($afbeelding['dirname'].'/thumbs/groot_'.$afbeelding['basename']))
{
if(thumbnail($afbeelding, array('groot', $hoogte_groot, $breedte_groot)))
{
echo '<a href="'.$afbeelding['dirname'].'/'.$afbeelding['basename'].'" target="_BLANK"><img src="'.$afbeelding['dirname'].'/thumbs/groot_'.$afbeelding['basename'].'" title="'.$afbeelding['basename'].'" alt="'.$afbeelding['basename'].'" class="thumbs"></a>'.PHP_EOL;
}
}else{
echo '<a href="'.$afbeelding['dirname'].'/'.$afbeelding['basename'].'" target="_BLANK"><img src="'.$afbeelding['dirname'].'/thumbs/groot_'.$afbeelding['basename'].'" title="'.$afbeelding['basename'].'" alt="'.$afbeelding['basename'].'" class="thumbs"></a>'.PHP_EOL;
}
}else{
echo '<p>Sorry, deze foto bestaat niet!</p>';
}
}else{
if(!$mappen = glob($map.'/*', GLOB_ONLYDIR))
{
$mappen = array();
}
foreach($mappen as $album)
{
if(basename($album) != 'thumbs')
{
echo '<a href="?pagina=fotoalbum&album='.$album.'">'.ucfirst(basename($album)).'</a><br>'.PHP_EOL;
}
}
if($aantalfotos > $perpagina)
{
if ($paginanr > 1)
{
echo '<a href="?pagina=fotoalbum&album='.$map.'&paginanr='.($paginanr - 1).'" title="Ga naar pagina '.($paginanr - 1).'"><< Vorige</a>';
}else{
echo '<< Vorige';
}
echo ' Pagina '.$paginanr.' van '.ceil($aantalfotos/$perpagina).' ';
if ($paginanr < ceil(($aantalfotos)/$perpagina))
{
echo '<a href="?pagina=fotoalbum&album='.$map.'&paginanr='.($paginanr + 1).'" title="Ga naar pagina '.($paginanr + 1).'">Volgende >></a><br>';
}else{
echo 'Volgende >><br>'.PHP_EOL;
}
}
for($fotonr = (($paginanr -1) * $perpagina); $fotonr <= ((($paginanr -1) * $perpagina) + ($perpagina - 1)) && $fotonr < count($bestanden); $fotonr += 1)
{
$afbeelding = pathinfo($afbeeldingen[$fotonr]);
if(!file_exists($afbeelding['dirname'].'/thumbs/klein_'.$afbeelding['basename']))
{
if(thumbnail($afbeelding, array('klein', $hoogte_klein, $breedte_klein)))
{
echo '<a href="?pagina=fotoalbum&album='.$map.'&afbeelding='.$afbeelding['basename'].'"><img src="'.$afbeelding['dirname'].'/thumbs/klein_'.$afbeelding['basename'].'" title="'.$afbeelding['basename'].'" alt="'.$afbeelding['basename'].'" class="thumbs"></a>'.PHP_EOL;
}
}else{
echo '<a href="?pagina=fotoalbum&album='.$map.'&afbeelding='.$afbeelding['basename'].'"><img src="'.$afbeelding['dirname'].'/thumbs/klein_'.$afbeelding['basename'].'" title="'.$afbeelding['basename'].'" alt="'.$afbeelding['basename'].'" class="thumbs"></a>'.PHP_EOL;
}
}
}
?>
Reacties
0