KOMPOOS.NL

wet floor PHP

home » php » image-effects » wet-floor-effect.html

sitemap


css/wet-floor-effect.html   |   javascript/wet-floor-effect.html   |   php/wet-floor-effect   |   php/natte-vloer-effect   |   imagick/natte-vloer-effect


voorbeeld natte vloer effect

wet floor afbeelding
spiegel van afbeelding

LET OP!

Als deze procedure op een server-configuratie moet werken zonder de volledige GD2 library (beschikbaar), moet je de alternatieve procedure gebruiken (die geen gebruik maakt van imagelayereffect()...). Klik op deze link.

uitleg wet floor procedure

Maak een file aan met de naam wet-floor.php en plaats het onderstaande php script daarin. Om een afbeelding van het natte vloer effect te voorzien, moet je het script aanroepen in een img-tag. Hier een voorbeeld van de html-code.


<img  src="wet-floor.jpg" width="225" height="200" alt="wet floor afbeelding"><br />
<img  src="wet-floor.php?img=wet-floor.jpg&hoogte=60px" alt="spiegel van afbeelding">

De hoogte kan je in px of % aangeven. Geef je geen hoogte aan, dan zal het script een default waarde van 50% (van de hoogte van de afbeelding) gebruiken.

php script van wet floor procedure


<?php
	if (isset($_GET['img']))
	{
		$bron_plaatje = $_GET['img'];
	}
	else
	{
		echo 'je hebt geen plaatje in de opdrachtregel geplaatst';
		exit();
	}
	$rood = 127;
	$groen = 127;
	$blauw = 127;
	if (isset($_GET['hoogte']))
	{
		$hoogte_output = $_GET['hoogte'];
		if (substr($hoogte_output, -1) == '%')
		{
			$hoogte_output = (int) substr($hoogte_output, 0, -1);
			if ($hoogte_output == 100)
			{
				$hoogte_output = "0.99";
			}
			elseif ($hoogte_output < 10)
			{
			$hoogte_output = "0.0$hoogte_output";
			}
			else
			{
				$hoogte_output = "0.$hoogte_output";
			}
		}
		else
		{
			$hoogte_output = (int) $hoogte_output;
		}
	}
	else
	{
		$hoogte_output = 0.50;
	}
	$alpha_start = 80;
	$alpha_end = 0;
	$details_plaatje = getimagesize($bron_plaatje);
	if ($details_plaatje === false)
	{
		echo 'het plaatje is niet goed';
		exit();
	}
	else
	{
		$breedte = $details_plaatje[0];
		$hoogte = $details_plaatje[1];
		$type = $details_plaatje[2];
	}
	if ($hoogte_output < 1)
	{
	$nieuwe_hoogte = $hoogte * $hoogte_output;
	}
	else
	{
	$nieuwe_hoogte = $hoogte_output;
	}
	switch ($type)
	{
		case 1:
			$bron_img = imagecreatefromgif($bron_plaatje);
			break;
		case 2:
			$bron_img = imagecreatefromjpeg($bron_plaatje);
			break;
		case 3:
			$bron_img = imagecreatefrompng($bron_plaatje);
			break;
		default:
			echo 'ik ken het format van het plaatje niet';
			exit();
	}
	$output = imagecreatetruecolor($breedte, $nieuwe_hoogte);
	$buffer = imagecreatetruecolor($breedte, $nieuwe_hoogte);
	imagesavealpha($bron_img, true);
	imagesavealpha($output, true);
	imagealphablending($output, false);
	imagesavealpha($buffer, true);
	imagealphablending($buffer, false);
	imagecopy($output, $bron_img, 0, 0, 0, $hoogte - $nieuwe_hoogte, $breedte, $nieuwe_hoogte);
	for ($y = 0; $y < $nieuwe_hoogte; $y++)
	{
		imagecopy($buffer, $output, 0, $y, 0, $nieuwe_hoogte - $y - 1, $breedte, 1);
	}
	$output = $buffer;
	$alpha_length = abs($alpha_start - $alpha_end);
	imagelayereffect($output, IMG_EFFECT_OVERLAY);
	for ($y = 0; $y <= $nieuwe_hoogte; $y++)
	{
		$pct = $y / $nieuwe_hoogte;
		if ($alpha_start > $alpha_end)
		{
			$alpha = (int) ($alpha_start - ($pct * $alpha_length));
		}
		else
		{
			$alpha = (int) ($alpha_start + ($pct * $alpha_length));
		}
		$final_alpha = 127 - $alpha;
		imagefilledrectangle($output, 0, $y, $breedte, $y, imagecolorallocatealpha($output, $rood, $groen, $blauw, $final_alpha));
	}
	if (headers_sent())
	{
		echo 'ik kan de wet floor afbeelding (spiegeling) niet weergeven';
		exit();
	}
	else
	{
		header("Content-type: image/png");
		imagepng($output);
		imagedestroy($output);
		exit();
	}
?>
Gebruik voor alle voorbeelden op de http://kompoos.nl een valide html5 pagina.