edge detectie php
work-around voor IMG_FILTER_EDGEDETECT

home | index | menu | help

Er is geen CSS ondersteuning.

		
edge detection
		

originele afbeelding Sommige webhosters hebben hun servers dusdanig geconfigureerd dat je niet over alle standaard-procedures van de gd2-library kan beschikken. (b.v. sommige debian-configs van Leaseweb). IMG_FILTER_EDGEDETECT werkt dan ook niet en daarom staat deze procedure op de pagina.
Deze "work-around" werkt prima, maar is niet zo snel als de standaard-procedure (IMG_FILTER_EDGEDETECT). Maar als dat verder geen probleem voor jou is kan je een php-file met de naam edge-detection.php aanmaken en daarin de hieronderstaande code plaatsen. Voer bij de variabele $edge_plaatje de naam van een afbeelding in, en roep deze routine aan (ergens in de body van jouw pagina) met <img src="edge-detection.php" />. Het resultaat van de procedure is op deze pagina te zien. De (hier verkleinde) afbeelding, in kleur, wordt gebruikt om de "edge-detect-afbeelding" op het scherm te "zetten".

<?php
function fixhelderheid($pixel){
	$pixel=sprintf('%06x',$pixel);
	$rood=hexdec(substr($pixel,0,2))*0.298;
	$groen=hexdec(substr($pixel,2,2))*0.589;
	$blauw=hexdec(substr($pixel,4))*0.109;
	return $rood+$groen+$blauw;}
$edge_plaatje="edge.jpg";
$werkplaatje=imagecreatefromjpeg($edge_plaatje);
$afmetingen=getimagesize($edge_plaatje);
$resultaat=imagecreatetruecolor($afmetingen[0],$afmetingen[1]);
for($x=0;$x<$afmetingen[0];$x++){
	for($y=0;$y<$afmetingen[1];$y++){
		$pixel_omhoog=fixhelderheid(imagecolorat($werkplaatje,$x,$y-1));
		$pixel_omlaag=fixhelderheid(imagecolorat($werkplaatje,$x,$y+1)); 
		$pixel_links=fixhelderheid(imagecolorat($werkplaatje,$x-1,$y));
		$pixel_rechts=fixhelderheid(imagecolorat($werkplaatje,$x+1,$y));
		$pixel_linksboven=fixhelderheid(imagecolorat($werkplaatje,$x-1,$y-1));
		$pixel_rechtsboven=fixhelderheid(imagecolorat($werkplaatje,$x+1,$y-1));
		$pixel_benedenlinks=fixhelderheid(imagecolorat($werkplaatje,$x-1,$y+1));
		$pixel_benedenrechts=fixhelderheid(imagecolorat($werkplaatje,$x+1,$y+1));
		$regelx=($pixel_rechtsboven+($pixel_rechts*2)+$pixel_benedenrechts)-($pixel_linksboven+($pixel_links*2)+$pixel_benedenlinks);
		$regely=($pixel_linksboven+($pixel_omhoog*2)+$pixel_rechtsboven)-($pixel_benedenlinks+($pixel_omlaag*2)+$pixel_benedenrechts);
		$grijs=sqrt($regelx*$regelx+$regely+$regely);
		$grijs=255-$grijs;
		if($grijs>255){$grijs=255;}
		if($grijs<0){$grijs=0;}
		$grijs_veranderd=imagecolorallocate($resultaat,$grijs,$grijs,$grijs);
		imagesetpixel($resultaat,$x,$y,$grijs_veranderd);}}
header('Content-Type: image/jpeg');
imagejpeg($resultaat);
imagedestroy($werkplaatje);
imagedestroy($resultaat);
?>		
		

cache 09-02-2011