
Maak een php-file met de naam edge-detection.php, en plaats het onderstaande php script daarin. Als je ergens in de body van een pagina de onderstaande html-regel toevoegt, zal een (gekleurd) plaatje getoond worden in grijs-waarden met een edge detect. Een zwart-wit afbeelding krijgt vanzelfsprekend ook een edge-effect als hij met deze php-routine aangeroepen wordt. Het voordeel van deze routine is dat er geen gebruik wordt gemaakt van de GD2 library. Dit is prettig omdat niet alle webhosters zo "aardig" zijn om deze library beschikbaar te stellen (en dan is dit een alternatief voor IMG_FILTER_EDGEDETECT wat, in dat geval, niet beschikbaar is). Vooral bij sommige Debian-configuraties is het vaak afzien (omdat er een andere graphische configuratie toegepast wordt/kan worden). Als je het origineel van de "edge-afbeelding" wilt zien kan je in de browser deze (html)file-naam even vervangen door edge-detection.jpg
<img src="edge-detection.php?src=edge-detection.jpg" />
<?php
function fix_de_helderheid($pixels){
$pixels=sprintf('%06x',$pixels);
$rood=hexdec(substr($pixels,0,2))*0.297;
$groen=hexdec(substr($pixels,2,2))*0.588;
$blauw=hexdec(substr($pixels,4))*0.108;
return $rood+$groen+$blauw;}
$edge_detect_image=$_GET[src];
$tijdelijke_image=imagecreatefromjpeg($edge_detect_image);
$afmetingen_image=getimagesize($edge_detect_image);
$nieuwe_afbeelding=imagecreatetruecolor($afmetingen_image[0],$afmetingen_image[1]);
for($x=0;$x<$afmetingen_image[0];$x++){
for($y=0;$y<$afmetingen_image[1];$y++){
$pixels_omhoog=fix_de_helderheid(imagecolorat($tijdelijke_image,$x,$y-1));
$pixels_omlaag=fix_de_helderheid(imagecolorat($tijdelijke_image,$x,$y+1));
$pixels_links=fix_de_helderheid(imagecolorat($tijdelijke_image,$x-1,$y));
$pixels_rechts=fix_de_helderheid(imagecolorat($tijdelijke_image,$x+1,$y));
$pixels_linksboven=fix_de_helderheid(imagecolorat($tijdelijke_image,$x-1,$y-1));
$pixels_rechtsboven=fix_de_helderheid(imagecolorat($tijdelijke_image,$x+1,$y-1));
$pixels_benedenlinks=fix_de_helderheid(imagecolorat($tijdelijke_image,$x-1,$y+1));
$pixels_benedenrechts=fix_de_helderheid(imagecolorat($tijdelijke_image,$x+1,$y+1));
$lijn_x=($pixels_rechtsboven+($pixels_rechts*2)+$pixels_benedenrechts)-($pixels_linksboven+($pixels_links*2)+$pixels_benedenlinks);
$lijn_y=($pixels_linksboven+($pixels_omhoog*2)+$pixels_rechtsboven)-($pixels_benedenlinks+($pixels_omlaag*2)+$pixels_benedenrechts);
$grijs=sqrt($lijn_x*$lijn_x+$lijn_y+$lijn_y);
$grijs=255-$grijs;
if($grijs>255){$grijs=255;}
if($grijs<0){$grijs=0;}
$aangepaste_grijswaarde=imagecolorallocate($nieuwe_afbeelding,$grijs,$grijs,$grijs);
imagesetpixel($nieuwe_afbeelding,$x,$y,$aangepaste_grijswaarde);}}
header('Content-Type: image/jpeg');
imagejpeg($nieuwe_afbeelding);
imagedestroy($tijdelijke_image);
imagedestroy($nieuwe_afbeelding);
?>