Poll statbar 1.5
Auteur: Button - 27 februari 2006 - 19:17 - Gekeurd door: nemesiskoen - Hits: 4176 - Aantal punten: 0.50 (2 stemmen)
een script-snippet in gd gemaakt voor het afdrukken van de resultaten van een poll
- aan te roepen op een andere pagina met: <img src="link.php?ver=100"> waarbij 'ver' gelijk moet zijn aan het aantal procent (op 100 tuurlijk en zonder het %-teken)
ja miss voor iedereen -> waarom die $maal100: de waarden die worden doorgegeven aan de pagina staan dus op 100 bv. 50 op 100 nu ik heb de $breedte ingesteld op standaard 100(om de reden die ik hierboven zei: de resultaten staan op 100), nu een balkje van 100 pixels breed is niet echt zo breed, dus met die $maal100 kan je instellen hoeveel keer die honderd moet vergroot worden... bv. $breedte = 100 * $maal100(=3), dan wordt de $breedte van de balk 300 ...
ook de doorgegeven var $_GET['ver'] is maal $maal100 zodat de verhoudingen kloppen
als je het nog niet snapt, experimenteer dan maar een beetje
|
Code: |
<?php
header("content-type: image/png");
if(isset($_GET['ver'])){
$maal100=6;//dit is het aantal keer dat de standaard breedte (die ik heb ingesteld op 100) moet vergroot worden
$hoogte=20;//hoogte voor de balk
$breedte=100*$maal100;//dit is de breedte van de balk (standaard: 100; dat (als je je resultaten op 100 meegeeft met $_GET['ver']) je beter zo laat staan) maal het aantal keer groter dan 100 (die wordt ingesteld enkele regels hierboven)
$image = imagecreate($breedte+50, $hoogte+3); //deze waarden zijn de waarden van (!)héél de afbeelding! dus niet alleen het balkje; altijd een paar pixels (of wat zijn het?) bijtellen anders komt het niet goed uit (<- voor de hoogte); voor de breedte ongeveer 50 bijtellen want de tekst moet er ook nog bij
$bgcolor = imagecolorallocate($image, 213, 213, 213); //'is gelijk aan de bgcolor van de site'
imagefill($image, 0, 0, $bgcolor);
$grijs = imagecolorallocate($image, 102, 102, 102);
$groen = imagecolorallocate($image, 132, 170, 132);
$punt1[0] = 0;
$punt1[1] = 0;
$punt1[2] = $breedte+1; // +1 --> zo past de tweede balk - met de resultaten - er netjes in
$punt1[3] = 0;
$punt1[4] = $breedte+1; // +1 --> zo past de tweede balk - met de resultaten - er netjes in
$punt1[5] = $hoogte;
$punt1[6] = 0;
$punt1[7] = $hoogte;
imagepolygon($image, $punt1, 4, $grijs);
imageline($image,0,$hoogte/2,$breedte,$hoogte/2,$grijs);
$ver=$_GET['ver']*$maal100;//dit is de breedte van de tweede polygen(veelhoek) (met de eigenlike procent): (verklaring:) die breedte moet natuurlijk ook aangepast worden aan de eerste balk, daarom vermenigvuldigen we hem met $maal100 dat ook bij de breedte van de eerste balk is gebeurd (zie boven)
$punt2[0] = 1;
$punt2[1] = 1;
$punt2[2] = $ver;
$punt2[3] = 1;
$punt2[4] = $ver;
$punt2[5] = $hoogte-1; //altijd om een waarde minder omdat het rood dan mooi in de andere polygon(vierhoek) komt.
$punt2[6] = 1;
$punt2[7] = $hoogte-1;
imagefilledpolygon($image, $punt2, 4, $groen);
if($_GET['ver']!=100){//om te voorkomen dat je een dubbele lijn krijgt op het einde van de balk wanneer het 100% aangeeft.
imageline($image,$ver,0,$ver,$hoogte,$grijs);
}
imagestring($image, 3, $breedte+5, 0, $_GET['ver']." %", $grijs);
imagefilter($image,IMG_FILTER_CONTRAST,5);
imagepng($image);
imagedestroy($image);
}
?>
<?php header("content-type: image/png"); $maal100=6;//dit is het aantal keer dat de standaard breedte (die ik heb ingesteld op 100) moet vergroot worden $hoogte=20;//hoogte voor de balk $breedte=100*$maal100;//dit is de breedte van de balk (standaard: 100; dat (als je je resultaten op 100 meegeeft met $_GET['ver']) je beter zo laat staan) maal het aantal keer groter dan 100 (die wordt ingesteld enkele regels hierboven) $image = imagecreate($breedte+50, $hoogte+3); //deze waarden zijn de waarden van (!)héél de afbeelding! dus niet alleen het balkje; altijd een paar pixels (of wat zijn het?) bijtellen anders komt het niet goed uit (<- voor de hoogte); voor de breedte ongeveer 50 bijtellen want de tekst moet er ook nog bij $bgcolor = imagecolorallocate($image, 213, 213, 213); //'is gelijk aan de bgcolor van de site' imagefill($image, 0, 0, $bgcolor); $grijs = imagecolorallocate($image, 102, 102, 102); $groen = imagecolorallocate($image, 132, 170, 132); $punt1[0] = 0; $punt1[1] = 0; $punt1[2] = $breedte+1; // +1 --> zo past de tweede balk - met de resultaten - er netjes in $punt1[3] = 0; $punt1[4] = $breedte+1; // +1 --> zo past de tweede balk - met de resultaten - er netjes in $punt1[5] = $hoogte; $punt1[6] = 0; $punt1[7] = $hoogte; imagepolygon($image, $punt1, 4, $grijs); imageline($image,0,$hoogte/2,$breedte,$hoogte/2,$grijs); $ver=$_GET['ver']*$maal100;//dit is de breedte van de tweede polygen(veelhoek) (met de eigenlike procent): (verklaring:) die breedte moet natuurlijk ook aangepast worden aan de eerste balk, daarom vermenigvuldigen we hem met $maal100 dat ook bij de breedte van de eerste balk is gebeurd (zie boven) $punt2[0] = 1; $punt2[1] = 1; $punt2[2] = $ver; $punt2[3] = 1; $punt2[4] = $ver; $punt2[5] = $hoogte-1; //altijd om een waarde minder omdat het rood dan mooi in de andere polygon(vierhoek) komt. $punt2[6] = 1; $punt2[7] = $hoogte-1; imagefilledpolygon($image, $punt2, 4, $groen); if($_GET['ver']!=100){//om te voorkomen dat je een dubbele lijn krijgt op het einde van de balk wanneer het 100% aangeeft. imageline($image,$ver,0,$ver,$hoogte,$grijs); } imagestring($image, 3, $breedte+5, 0, $_GET['ver']." %", $grijs); imagefilter($image,IMG_FILTER_CONTRAST,5); imagepng($image); imagedestroy($image); } ?>
Download code (.txt)
|
|
Stemmen |
Niet ingelogd. |
|