als ik dit script run geeft de pagina dat het plaatje niet weergegeven kon worden omdat het script fouten bevat. Ik heb de code gchckd via tidy in HTML kit maar die geeft niets bijzonders.

wat klopt er niet?



<?php

$gegevens = array(10, 30, 40);
$kleuren = array('#FF0000', '#00FF00', '#0000FF');
$legenda = array('Type A', 'Type B', 'Type C');
$img_hoogte = 500; # Hoogte van het plaatje
$breedte = 40; # Breedte van de kolom

# Berekend de breedte van het plaatje excl. de legenda breedte
function kolom_hoogte($deel, $max, $img_hoogte, $breedte){
return ($deel/$max)*($img_hoogte-(0.5*$breedte));
}

# Voor het 3d effect (half cosinus 30)
function schuin_x($breedte){
return $breedte*0.43;
}

# Voor het 3d effect (half sinus 30)
function schuin_y($breedte){
return $breedte*0.25;
}

# Zet de HTML kleur om in een rbg waarde.
function hex2rbg($color, $image){
$string = str_replace('#','',$color);
return imagecolorallocate($image, hexdec(substr($string,0,2)), hexdec(substr($string,2,2)), hexdec(substr($string,4,2)));
}

# Berekend het maximum aantal tekens per array waarde en geeft de lengte van de langste terug.
function maxarraylength($input){
foreach($input as $v){
$output[] = strlen($v);
}
return max($output);
}

header("content-type: image/png");

# grootte van het plaatje basseren op het aantal kolomen:
$kolomen = count($gegevens);
$width = ($kolomen*$breedte*2)+(0.5*$breedte);
$image = imagecreate($width+(maxarraylength($legenda)*7)+25, ($img_hoogte+1));

# Achtergrond:
$bg = imagecolorallocate($image, 255, 255, 255);

# KOLUMS
for($i=0;$i<$kolomen;$i++){
# vars:
$begin = ($i*$breedte)+($i*$breedte)+(0.5*$breedte);
$hoogte = kolom_hoogte($gegevens[$i], max($gegevens), $img_hoogte, $breedte);
$kleur = hex2rbg($kleuren[$i], $image);
$black = imagecolorallocate($image, 0, 0, 0);

# kolom:
imagefilledrectangle($image, $begin, ($img_hoogte-$hoogte), ($begin+$breedte), $img_hoogte, $kleur); # Vlak
imagerectangle($image, $begin, ($img_hoogte-$hoogte), ($begin+$breedte), $img_hoogte, $black); # Omlijning

# 3d effect:
$punten = array(
$begin,#X
($img_hoogte-$hoogte),#Y

($begin+schuin_x($breedte)),#X
($img_hoogte-$hoogte-schuin_y($breedte)),#Y

($begin+$breedte+schuin_x($breedte)),#X
($img_hoogte-$hoogte-schuin_y($breedte)),#Y

($begin+$breedte+schuin_x($breedte)),#X
($img_hoogte-schuin_y($breedte)),#Y

($begin+$breedte),#X
$img_hoogte,#Y

($begin+$breedte),#X
($img_hoogte-$hoogte)#Y
);
imagefilledpolygon($image, $punten, 6, $kleur); # Vlak
imagepolygon($image, $punten, 6, $black); # Omlijning
imageline($image, $punten[10], $punten[11], $punten[4], $punten[5], $black); # Tussen lijn

# Legenda:
$top = (15*$i)+(15*$i)+(0.5*$breedte);
$left = ($kolomen*$breedte)+($kolomen*$breedte)+(0.5*$breedte);
imagefilledrectangle($image, $left, $top*0.5, $left+15, $top*0.5+10, $kleur); # Vlak
imagerectangle($image, $left, $top*0.5, $left+15, $top*0.5+10, $black); # Omlijning
imagestring($image, 3, $left+20, $top*0.5, $legenda[$i], $black); # Text
}
# // KOLUMS

imagepng($image);

imagedestroy($image);

?>
pffffff. spaties. het is opgelost. allemaal hardstikke bedankt
wat een toestand, ik werd helemaal stapelgek

[size=xsmall]Toevoeging op 12/08/2015 11:33:35:[/size]

toch nog een vraagje. het plaatje beslaat de hele pagina. hoe kan ik het verkleinen tot alleen de balkjes zodat ik eronder nog tksten kan zetten?
Lex, zou je jouw titel van je bericht willen aanpassen zodat deze je probleem en/of vraagstelling weergeeft? Dat zorgt voor verduidelijking in het forum.

Alvast bedankt!

Reageren