
Maak een file met de naam "grayscale.php" aan en plaats daarin de php code die hieronder staat. En waar je de zwart-wit (grijstinten) afbeelding wilt hebben plaats je de (html) regel die je, ook, hieronder kunt vinden. Het voordeel van deze procedure is dat je niet de beschikking over de GD2 library hoeft te hebben om het grayscale-effect te maken. Dankzij PHP werkt deze procedure in alle browsers (cross browser) en valideert, voor het overige, op alle mogelijke manieren. Als je het origineel, wat bij de procedure is gebruikt, wilt bekijken heb ik die achter deze link (grayscale.jpg) gezet.
<img src="grayscale.php?src=de_naam_van_jouw_file.jpg">
<?php
$grayscale_file=$_GET[src];
if(is_file($grayscale_file)){
$het_hele_pad=explode(".",$grayscale_file);
$eindindex=sizeof($het_hele_pad)-1;
$extensie=$het_hele_pad[$eindindex];
if(preg_match("/jpg|jpeg|JPG|JPEG/",$extensie)){
$temp_gray_file=imagecreatefromjpeg($grayscale_file);}
$breedte_afbeelding=imageSX($temp_gray_file);
$hoogte_afbeelding=imageSY($temp_gray_file);
for($y=0;$y<$hoogte_afbeelding;$y++) {
for($x=0;$x<$breedte_afbeelding;$x++) {
$rgb=imagecolorat($temp_gray_file,$x,$y);
$rood=($rgb >> 16)& 0xFF;
$groen=($rgb >> 8)& 0xFF;
$blauw=$rgb & 0xFF;
$grijs=round(.299*$rood + .587*$groen + .114*$blauw);
$grijs_rood=$grijs << 16;
$grijs_groen=$grijs << 8;
$grijs_blauw=$grijs;
$grijs_kleur=$grijs_rood | $grijs_groen | $grijs_blauw;
imagesetpixel($temp_gray_file,$x,$y,$grijs_kleur);
imagecolorallocate($temp_gray_file,$grijs,$grijs,$grijs);}}
$grayscale_afbeelding=ImageCreateTrueColor($breedte_afbeelding,$hoogte_afbeelding);
imagecopy($grayscale_afbeelding,$temp_gray_file,0,0,0,0,$breedte_afbeelding,$hoogte_afbeelding);
header("Content-type:image/jpeg");
imagejpeg($grayscale_afbeelding);
imagedestroy($grayscale_afbeelding);
imagedestroy($temp_gray_file);}
?>