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&amp;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&amp;album='.$map.'&amp;afbeelding='.$vorige_afbeelding['basename'].'" title="Ga naar foto '.$vorige_afbeelding['basename'].'">&lt;&lt; Vorige</a>';
	}else{
	    echo '&lt;&lt; Vorige';
	}
    
	echo '&nbsp;&nbsp;&nbsp; Foto '.($fotonr +1).' van '.$aantalfotos.' &nbsp;&nbsp;&nbsp;';
	
	if($fotonr < $aantalfotos -1)
	{
	    $volgende_afbeelding = pathinfo($afbeeldingen[$fotonr+1]);
	    
	    echo '<a href="?pagina=fotoalbum&amp;album='.$map.'&amp;afbeelding='.$volgende_afbeelding['basename'].'" title="Ga naar foto '.$volgende_afbeelding['basename'].'">Volgende &gt;&gt;</a><br>';
	}else{
	    echo 'Volgende &gt;&gt;<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&amp;album='.$map.'&amp;paginanr='.($paginanr - 1).'" title="Ga naar pagina '.($paginanr - 1).'">&lt;&lt; Vorige</a>';
	}else{
	    echo '&lt;&lt; Vorige';
	}
    
	echo '&nbsp;&nbsp;&nbsp; Pagina '.$paginanr.' van '.ceil($aantalfotos/$perpagina).' &nbsp;&nbsp;&nbsp;';
	
	if ($paginanr < ceil(($aantalfotos)/$perpagina))
	{
	    echo '<a href="?pagina=fotoalbum&amp;album='.$map.'&amp;paginanr='.($paginanr + 1).'" title="Ga naar pagina '.($paginanr + 1).'">Volgende &gt;&gt;</a><br>';
	}else{
	    echo 'Volgende &gt;&gt;<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&amp;album='.$map.'&amp;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&amp;album='.$map.'&amp;afbeelding='.$afbeelding['basename'].'"><img src="'.$afbeelding['dirname'].'/thumbs/klein_'.$afbeelding['basename'].'" title="'.$afbeelding['basename'].'" alt="'.$afbeelding['basename'].'" class="thumbs"></a>'.PHP_EOL;
	}
    }
}
?>

Reacties

0
Nog geen reacties.