hartelijk dank zet hem ook bij scripts dan kan iedereen hem gebruiken.
(miss een idee om het ook voor osvendetta te gebruiken?)
hartelijk dank zet hem ook bij scripts dan kan iedereen hem gebruiken.
(miss een idee om het ook voor osvendetta te gebruiken?)
Graag gedaan, zal het even doen
Nieuwe reactie samengevoegd met originele reactie op 30.12.10 12:50:23:
Done, is toegevoegd even wachten op toestemming.
Inderdaad een leuk scriptje. Maar voordat ik hem aan de library toevoeg: Waarom mag dit wel:
http://grootscripting.nl/gd.php?procent=100.9
En mag dit niet?:
Oja, sorry, klein foutje
Iets te snel nagedacht.
Komma getallen kunnen er nog wel achter?
<?php
// Balk generator gemaakt door GrootScripting, bewerkt door Killingdevil
// Verander onderstaande variabelen naar je eigen wensen
$maxdecimalen = 2; // Geef hier het maximaal aantal decimalen op, 0 is hele getallen
$breedte = 152; // Afbeeldingsbreedte
$hoogte = 17; // Afbeeldingshoogte
$border = 1; // Omlijningsbreedte
$correctie = 1; // Eventuele correctie voor de onderkant en rechterkant, bij sommige webservers nodig, zet op 0 voor geen veranderingen.
$tekens = '% Groentje'; // Eventuele tekens weergeven achter het aantal procent (zoals het procent teken etc.)
$lettergrootte = 3; // 3 is standaard, mag maximaal 5 zijn en minimaal 1. (de uitlijning kan s bij sommige lettergroottes niet kloppen, dan moet je in de functies iets aanpassen).
// Verander onderstaande constanten naar eigen waarde
define("tekens", "% Groentje"); // Eventuele tekens weergeven achter het aantal procent (zoals het procent teken etc.)
define("uitlijning", "links"); // Hoe de tekst uitgelijnd moet worden, kan de waardes "centreer", 'links' of 'rechts' bevatten, standaardwaarde is "centreer"
define("scheidingsteken", "."); // Teken om decimalen te scheiden in de output, input moet wel met punten.
// HIERONDER ALLEEN AANPASSEN ALS JE WEET WAT JE DOET!!!
$procent = $_GET['procent'];
$split = explode('.', $procent);
if(strlen($split[1]) > $maxdecimalen){
echo '<font color="red" face="arial">Je mag maximaal <b>'.$maxdecimalen.' decimalen</b> gebruiken, jij gebruikt nu <b>'.strlen($split[1]).' decimalen</b>.</font>';
} else{
if(is_numeric($procent) && $procent >= 0 && $procent <= 100){
// Maak de achtergrond afbeelding (125x17)
$afbeelding = imagecreate($breedte, $hoogte);
// Definieër de kleuren
switch($_GET['stijl']){
case "rood":
$achtergrond = imagecolorallocate($afbeelding, 125, 0, 0);
$voorkantkleur = imagecolorallocate($afbeelding, 255, 0, 0);
break;
case "geel":
$achtergrond = imagecolorallocate($afbeelding, 255, 106, 0);
$voorkantkleur = imagecolorallocate($afbeelding, 255, 216, 0);
break;
case "blauw":
$achtergrond = imagecolorallocate($afbeelding, 0, 0, 125);
$voorkantkleur = imagecolorallocate($afbeelding, 0, 0, 255);
break;
case "paars":
$achtergrond = imagecolorallocate($afbeelding, 33, 0, 127);
$voorkantkleur = imagecolorallocate($afbeelding, 87, 0, 127);
break;
case "rose":
$achtergrond = imagecolorallocate($afbeelding, 178, 0, 255);
$voorkantkleur = imagecolorallocate($afbeelding, 255, 0, 220);
break;
case "grijs":
$achtergrond = imagecolorallocate($afbeelding, 0, 0, 0);
$voorkantkleur = imagecolorallocate($afbeelding, 64, 64, 64);
break;
case "bruinrood":
$achtergrond = imagecolorallocate($afbeelding, 91, 63, 60);
$voorkantkleur = imagecolorallocate($afbeelding, 133, 21, 11);
break;
case "turquoise":
$achtergrond = imagecolorallocate($afbeelding, 0, 148, 255);
$voorkantkleur = imagecolorallocate($afbeelding, 0, 255, 255);
break;
default:
$achtergrond = imagecolorallocate($afbeelding, 0, 125, 0);
$voorkantkleur = imagecolorallocate($afbeelding, 0, 255, 0);
break;
}
$tekstkleur = imagecolorallocate($afbeelding, 255, 255, 255);
$randkleur = imagecolorallocate($afbeelding, 0, 0, 0);
$grootte = round(($procent/100) * $breedte);
// Teken het vierkant op basis van de gegeven procenten
imagefilledrectangle($afbeelding, $border, $border, $grootte - $border - $correctie, $hoogte - $border - $correctie, $voorkantkleur);
// Schrijf het aantal procent op
if(constant("uitlijning") == "links"){
textAlignLeft($afbeelding, $procent . constant("tekens"), $tekstkleur);
} else if(constant("uitlijning") == "rechts"){
textAlignRight($afbeelding, $procent . constant("tekens"), $tekstkleur);
} else{
textAlignCenter($afbeelding, $procent . constant("tekens"), $tekstkleur);
}
imagerectangle($afbeelding, 0, 0, $breedte-1, $hoogte-1, $randkleur);
// Schrijf het bestand naar de browser
header('Content-Type: image/png');
imagepng($afbeelding);
imagedestroy($afbeelding);
} else{
echo '<font face="arial" color="red">Dit is geen geldig getal, of het getal ligt niet tussen de 0 en 100.</font>';
}
}
function textAlignCenter($image, $string, $color) {
global $lettergrootte;
$padding_left = (imagesx($image) - 8 * strlen($string)) / 2;
$padding_top = (imagesy($image) - 14) / 2;
$string_split = explode(".", $string);
$string = $string_split[0].$teken.$string_split[1];
imagestring($image, $lettergrootte, $padding_left, $padding_top, $string, $color);
}
function textAlignLeft($image, $string, $color) {
global $lettergrootte;
$padding_top = (imagesy($image) - 14) / 2;
$string_split = explode(".", $string);
$string = $string_split[0].$teken.$string_split[1];
imagestring($image, $lettergrootte, 8, $padding_top, $string, $color);
}
function textAlignRight($image, $string, $color) {
global $lettergrootte;
$padding_top = (imagesy($image) - 14) / 2;
$padding_left = (imagesx($image) - 8 * strlen($string));
$string_split = explode(".", $string);
$string = $string_split[0].$teken.$string_split[1];
imagestring($image, $lettergrootte, $padding_left, $padding_top, $string, $color);
}
?>
Toon Meer
Verbeterd.
@Killingdevil,
Zou je de bovenstaande code erop kunnen zetten
Edit:
Lars kijk eens naar mijn reactie ^
SkyNet,
Wacht, ik maak er even iets bij
Nieuwe reactie samengevoegd met originele reactie op 30.12.10 13:53:51:
<?php
// Balk generator gemaakt door GrootScripting, bewerkt door Killingdevil
// Verander onderstaande variabelen naar je eigen wensen
$maxdecimalen = 2; // Geef hier het maximaal aantal decimalen op, 0 is hele getallen
$breedte = 152; // Afbeeldingsbreedte
$hoogte = 17; // Afbeeldingshoogte
$border = 1; // Omlijningsbreedte
$correctie = 1; // Eventuele correctie voor de onderkant en rechterkant, bij sommige webservers nodig, zet op 0 voor geen veranderingen.
$tekens = '% Groentje'; // Eventuele tekens weergeven achter het aantal procent (zoals het procent teken etc.)
$lettergrootte = 3; // 3 is standaard, mag maximaal 5 zijn en minimaal 1. (de uitlijning kan s bij sommige lettergroottes niet kloppen, dan moet je in de functies iets aanpassen).
// Verander onderstaande constanten naar eigen waarde
define("tekens", "% Groentje"); // Eventuele tekens weergeven achter het aantal procent (zoals het procent teken etc.)
define("uitlijning", "links"); // Hoe de tekst uitgelijnd moet worden, kan de waardes "centreer", 'links' of 'rechts' bevatten, standaardwaarde is "centreer"
define("scheidingsteken", "."); // Teken om decimalen te scheiden in de output, input moet wel met punten.
// HIERONDER ALLEEN AANPASSEN ALS JE WEET WAT JE DOET!!!
$procent = $_GET['procent'];
$split = explode('.', $procent);
if(strlen($split[1]) > $maxdecimalen){
echo '<font color="red" face="arial">Je mag maximaal <b>'.$maxdecimalen.' decimalen</b> gebruiken, jij gebruikt nu <b>'.strlen($split[1]).' decimalen</b>.</font>';
} else{
if(is_numeric($procent) && $procent >= 0 && $procent <= 100){
// Maak de achtergrond afbeelding (125x17)
$afbeelding = imagecreate($breedte, $hoogte);
// Definieër de kleuren
switch($_GET['stijl']){
case "rood":
$achtergrond = imagecolorallocate($afbeelding, 125, 0, 0);
$voorkantkleur = imagecolorallocate($afbeelding, 255, 0, 0);
break;
case "geel":
$achtergrond = imagecolorallocate($afbeelding, 255, 106, 0);
$voorkantkleur = imagecolorallocate($afbeelding, 255, 216, 0);
break;
case "blauw":
$achtergrond = imagecolorallocate($afbeelding, 0, 0, 125);
$voorkantkleur = imagecolorallocate($afbeelding, 0, 0, 255);
break;
case "paars":
$achtergrond = imagecolorallocate($afbeelding, 33, 0, 127);
$voorkantkleur = imagecolorallocate($afbeelding, 87, 0, 127);
break;
case "rose":
$achtergrond = imagecolorallocate($afbeelding, 178, 0, 255);
$voorkantkleur = imagecolorallocate($afbeelding, 255, 0, 220);
break;
case "grijs":
$achtergrond = imagecolorallocate($afbeelding, 0, 0, 0);
$voorkantkleur = imagecolorallocate($afbeelding, 64, 64, 64);
break;
case "bruinrood":
$achtergrond = imagecolorallocate($afbeelding, 91, 63, 60);
$voorkantkleur = imagecolorallocate($afbeelding, 133, 21, 11);
break;
case "turquoise":
$achtergrond = imagecolorallocate($afbeelding, 0, 148, 255);
$voorkantkleur = imagecolorallocate($afbeelding, 0, 255, 255);
break;
default:
$achtergrond = imagecolorallocate($afbeelding, 0, 125, 0);
$voorkantkleur = imagecolorallocate($afbeelding, 0, 255, 0);
break;
}
$tekstkleur = imagecolorallocate($afbeelding, 255, 255, 255);
$randkleur = imagecolorallocate($afbeelding, 0, 0, 0);
$grootte = round(($procent/100) * $breedte);
// Teken het vierkant op basis van de gegeven procenten
imagefilledrectangle($afbeelding, $border, $border, $grootte - $border - $correctie, $hoogte - $border - $correctie, $voorkantkleur);
// Schrijf het aantal procent op
if(constant("uitlijning") == "links"){
textAlignLeft($afbeelding, $procent . constant("tekens"), $tekstkleur);
} else if(constant("uitlijning") == "rechts"){
textAlignRight($afbeelding, $procent . constant("tekens"), $tekstkleur);
} else{
textAlignCenter($afbeelding, $procent . constant("tekens"), $tekstkleur);
}
imagerectangle($afbeelding, 0, 0, $breedte-1, $hoogte-1, $randkleur);
// Schrijf het bestand naar de browser
header('Content-Type: image/png');
imagepng($afbeelding);
imagedestroy($afbeelding);
} else{
echo '<font face="arial" color="red">Dit is geen geldig getal, of het getal ligt niet tussen de 0 en 100.</font>';
}
}
function textAlignCenter($image, $string, $color) {
global $lettergrootte;
$padding_left = (imagesx($image) - 8 * strlen($string)) / 2;
$padding_top = (imagesy($image) - 14) / 2;
$string_split = explode(".", $string);
$string = $string_split[0].$teken.$string_split[1];
imagestring($image, $lettergrootte, $padding_left, $padding_top, $string, $color);
}
function textAlignLeft($image, $string, $color) {
global $lettergrootte;
$padding_top = (imagesy($image) - 14) / 2;
$string_split = explode(".", $string);
$string = $string_split[0].$teken.$string_split[1];
imagestring($image, $lettergrootte, 8, $padding_top, $string, $color);
}
function textAlignRight($image, $string, $color) {
global $lettergrootte;
$padding_top = (imagesy($image) - 14) / 2;
$padding_left = (imagesx($image) - 8 * strlen($string));
$string_split = explode(".", $string);
$string = $string_split[0].$teken.$string_split[1];
imagestring($image, $lettergrootte, $padding_left, $padding_top, $string, $color);
}
?>
Toon Meer
Zo, als je nu bij het voorbeeld:
http://grootscripting.nl/gd.php?procent=50
Een kommagetal invoegt met meer dan 2 decimalen, dan krijg je een error.
Je kan meer decimalen of geen decimalen aanzetten door bijv. de 2 naar 0 te veranderen = hele getallen of naar 1 = 1 decimaal.
Edit:
Laatste change, je kan nu 6 andere kleuren gebruiken.
Als je &kleur=rood bijv. meegeeft word ie rood, als kleur niet rood, geel, blauw, paars, rose of grijs bevat word hij groen.
Edit:
Ik heb voor jou laatste wijziging ook in je script gewijzigd. Maar samen komen we wel tot een perfecte versie! Dit is mijn huidige versie:
<?php
$image_height = 200;
$image_width = 200;
$border_size = 20;
$procent = (isset($_GET['procent'])) ? round($_GET['procent'], 2) : 0;
if($procent >= 0 && $procent <= 100){
// Maak de afbeelding
$afbeelding = imagecreate($image_width, $image_height);
// Definiër de kleuren
$achtergrond = imagecolorallocate($afbeelding, 0, 125, 0);
$voorkantkleur = imagecolorallocate($afbeelding, 0, 255, 0);
$tekstkleur = imagecolorallocate($afbeelding, 0, 0, 0);
$grootte = round($procent/100 * ($image_width - $border_size));
// Teken het vierkant op basis van de gegeven procenten
imagefilledrectangle($afbeelding, $border_size, $border_size, $grootte + $border_size, $image_height - $border_size, $voorkantkleur);
// Voeg de tekst toe aan de afbeelding
imageStringCentered($afbeelding, $procent . ' %', $tekstkleur);
// Schrijf het bestand naar de browser
header('Content-Type: image/png');
imagepng($afbeelding);
imagedestroy($afbeelding);
} else {
echo '<font face="arial">Roep deze pagina zo aan: <a href="gd.php?procent=25">gd.php?procent=25</a> waar procent=25 staat tot 25%.</a>Het getal moet tussen de 0 en 100 liggen.';
}
function imageStringCentered($image, $string, $color) {
$padding_left = (imagesx($image) - 8 * strlen($string)) / 2;
$padding_top = (imagesy($image) - 16) / 2;
imagestring($image, 4, $padding_left, $padding_top, $string, $color);
}
?>
Toon Meer
Wat ik heb gedaan:
- Het cijfers met decimalen probleem opgelost, zoals jij dus achteraf ook al had gedaan.
- Een aantal variabele geïntroduceerd. Deze maken het mogelijk makkelijk het script aan te passen zonder eerst te moeten zoeken hoe dat te doen. Daarnaast lossen ze het probleem op van 'magic numbers', die je eigenlijk altijd moet voorkomen.
- Een function geïntroduceerd, zodoende blijft het script leesbaarder, en daarnaast is de functie ook los goed bruikbaar.
- Voorkomen dat het niet opgeven van $_GET['procent'] problemen oplevert.
Dingen die discutabel zijn:
- Het script is in het Nederlands geschreven, ik ben van mening dat je altijd in het Engels moet programmeren.
- De if-else constructie zal in productie doelloos zijn.
Ik hoor graag wat je van deze versie vind.
@Killingdevil,
Heel erg bedankt, ik ben weer wat wijzer.
Dan is het zo waarschijnlijk wel goed:
<?php
// Balk generator gemaakt door GrootScripting, bewerkt door Killingdevil
// Verander onderstaande variabelen naar je eigen wensen
$maxdecimalen = 2; // Geef hier het maximaal aantal decimalen op, 0 is hele getallen
$breedte = 152; // Afbeeldingsbreedte
$hoogte = 17; // Afbeeldingshoogte
$border = 1; // Omlijningsbreedte
$correctie = 1; // Eventuele correctie voor de onderkant en rechterkant, bij sommige webservers nodig, zet op 0 voor geen veranderingen.
$tekens = '% Groentje'; // Eventuele tekens weergeven achter het aantal procent (zoals het procent teken etc.)
$lettergrootte = 3; // 3 is standaard, mag maximaal 5 zijn en minimaal 1. (de uitlijning kan s bij sommige lettergroottes niet kloppen, dan moet je in de functies iets aanpassen).
// Verander onderstaande constanten naar eigen waarde
define("tekens", "% Groentje"); // Eventuele tekens weergeven achter het aantal procent (zoals het procent teken etc.)
define("uitlijning", "links"); // Hoe de tekst uitgelijnd moet worden, kan de waardes "centreer", 'links' of 'rechts' bevatten, standaardwaarde is "centreer"
define("scheidingsteken", "."); // Teken om decimalen te scheiden in de output, input moet wel met punten.
// HIERONDER ALLEEN AANPASSEN ALS JE WEET WAT JE DOET!!!
$procent = $_GET['procent'];
$split = explode('.', $procent);
if(strlen($split[1]) > $maxdecimalen){
echo '<font color="red" face="arial">Je mag maximaal <b>'.$maxdecimalen.' decimalen</b> gebruiken, jij gebruikt nu <b>'.strlen($split[1]).' decimalen</b>.</font>';
} else{
if(is_numeric($procent) && $procent >= 0 && $procent <= 100){
// Maak de achtergrond afbeelding (125x17)
$afbeelding = imagecreate($breedte, $hoogte);
// Definieër de kleuren
switch($_GET['stijl']){
case "rood":
$achtergrond = imagecolorallocate($afbeelding, 125, 0, 0);
$voorkantkleur = imagecolorallocate($afbeelding, 255, 0, 0);
break;
case "geel":
$achtergrond = imagecolorallocate($afbeelding, 255, 106, 0);
$voorkantkleur = imagecolorallocate($afbeelding, 255, 216, 0);
break;
case "blauw":
$achtergrond = imagecolorallocate($afbeelding, 0, 0, 125);
$voorkantkleur = imagecolorallocate($afbeelding, 0, 0, 255);
break;
case "paars":
$achtergrond = imagecolorallocate($afbeelding, 33, 0, 127);
$voorkantkleur = imagecolorallocate($afbeelding, 87, 0, 127);
break;
case "rose":
$achtergrond = imagecolorallocate($afbeelding, 178, 0, 255);
$voorkantkleur = imagecolorallocate($afbeelding, 255, 0, 220);
break;
case "grijs":
$achtergrond = imagecolorallocate($afbeelding, 0, 0, 0);
$voorkantkleur = imagecolorallocate($afbeelding, 64, 64, 64);
break;
case "bruinrood":
$achtergrond = imagecolorallocate($afbeelding, 91, 63, 60);
$voorkantkleur = imagecolorallocate($afbeelding, 133, 21, 11);
break;
case "turquoise":
$achtergrond = imagecolorallocate($afbeelding, 0, 148, 255);
$voorkantkleur = imagecolorallocate($afbeelding, 0, 255, 255);
break;
default:
$achtergrond = imagecolorallocate($afbeelding, 0, 125, 0);
$voorkantkleur = imagecolorallocate($afbeelding, 0, 255, 0);
break;
}
$tekstkleur = imagecolorallocate($afbeelding, 255, 255, 255);
$randkleur = imagecolorallocate($afbeelding, 0, 0, 0);
$grootte = round(($procent/100) * $breedte);
// Teken het vierkant op basis van de gegeven procenten
imagefilledrectangle($afbeelding, $border, $border, $grootte - $border - $correctie, $hoogte - $border - $correctie, $voorkantkleur);
// Schrijf het aantal procent op
if(constant("uitlijning") == "links"){
textAlignLeft($afbeelding, $procent . constant("tekens"), $tekstkleur);
} else if(constant("uitlijning") == "rechts"){
textAlignRight($afbeelding, $procent . constant("tekens"), $tekstkleur);
} else{
textAlignCenter($afbeelding, $procent . constant("tekens"), $tekstkleur);
}
imagerectangle($afbeelding, 0, 0, $breedte-1, $hoogte-1, $randkleur);
// Schrijf het bestand naar de browser
header('Content-Type: image/png');
imagepng($afbeelding);
imagedestroy($afbeelding);
} else{
echo '<font face="arial" color="red">Dit is geen geldig getal, of het getal ligt niet tussen de 0 en 100.</font>';
}
}
function textAlignCenter($image, $string, $color) {
global $lettergrootte;
$padding_left = (imagesx($image) - 8 * strlen($string)) / 2;
$padding_top = (imagesy($image) - 14) / 2;
$string_split = explode(".", $string);
$string = $string_split[0].$teken.$string_split[1];
imagestring($image, $lettergrootte, $padding_left, $padding_top, $string, $color);
}
function textAlignLeft($image, $string, $color) {
global $lettergrootte;
$padding_top = (imagesy($image) - 14) / 2;
$string_split = explode(".", $string);
$string = $string_split[0].$teken.$string_split[1];
imagestring($image, $lettergrootte, 8, $padding_top, $string, $color);
}
function textAlignRight($image, $string, $color) {
global $lettergrootte;
$padding_top = (imagesy($image) - 14) / 2;
$padding_left = (imagesx($image) - 8 * strlen($string));
$string_split = explode(".", $string);
$string = $string_split[0].$teken.$string_split[1];
imagestring($image, $lettergrootte, $padding_left, $padding_top, $string, $color);
}
?>
Toon Meer
OOP wil ik dit nog niet maken, omdat ongeveer 99% van alle crimegames die dit gebruiken toch niet OOP gescript is, en het project waar ik het voor wil gebruiken ook niet.
Verder heb ik aan alles voldaan.
Hopelijk is het zo perfect
Nieuwe reactie samengevoegd met originele reactie op 30.12.10 20:11:53:
Killingdevil, kan je hem even vernieuwen, met bovenstaand script
netjes gedaan lars zal dit scriptje zeker nuttig gaan gebruiken!
Alsjeblieft
Zijn de laatste functies handig btw.?
je bedoelt de kleurfuncties? Voor diegene die niet weten hoe ze met de RGB colors moeten werken wel. Voor mij persoonlijk is het overbodig.
Is er überhaupt naar mijn reactie gekeken? :p
@Killingdevil,
Heel erg bedankt, ik ben weer wat wijzer.
Dan is het zo waarschijnlijk wel goed:
<?php
// Balk generator gemaakt door GrootScripting, bewerkt door Killingdevil
// Verander onderstaande variabelen naar je eigen wensen
$maxdecimalen = 2; // Geef hier het maximaal aantal decimalen op, 0 is hele getallen
$breedte = 152; // Afbeeldingsbreedte
$hoogte = 17; // Afbeeldingshoogte
$border = 1; // Omlijningsbreedte
$correctie = 1; // Eventuele correctie voor de onderkant en rechterkant, bij sommige webservers nodig, zet op 0 voor geen veranderingen.
$tekens = '% Groentje'; // Eventuele tekens weergeven achter het aantal procent (zoals het procent teken etc.)
$lettergrootte = 3; // 3 is standaard, mag maximaal 5 zijn en minimaal 1. (de uitlijning kan s bij sommige lettergroottes niet kloppen, dan moet je in de functies iets aanpassen).
// Verander onderstaande constanten naar eigen waarde
define("tekens", "% Groentje"); // Eventuele tekens weergeven achter het aantal procent (zoals het procent teken etc.)
define("uitlijning", "links"); // Hoe de tekst uitgelijnd moet worden, kan de waardes "centreer", 'links' of 'rechts' bevatten, standaardwaarde is "centreer"
define("scheidingsteken", "."); // Teken om decimalen te scheiden in de output, input moet wel met punten.
// HIERONDER ALLEEN AANPASSEN ALS JE WEET WAT JE DOET!!!
$procent = $_GET['procent'];
$split = explode('.', $procent);
if(strlen($split[1]) > $maxdecimalen){
echo '<font color="red" face="arial">Je mag maximaal <b>'.$maxdecimalen.' decimalen</b> gebruiken, jij gebruikt nu <b>'.strlen($split[1]).' decimalen</b>.</font>';
} else{
if(is_numeric($procent) && $procent >= 0 && $procent <= 100){
// Maak de achtergrond afbeelding (125x17)
$afbeelding = imagecreate($breedte, $hoogte);
// Definieër de kleuren
switch($_GET['stijl']){
case "rood":
$achtergrond = imagecolorallocate($afbeelding, 125, 0, 0);
$voorkantkleur = imagecolorallocate($afbeelding, 255, 0, 0);
break;
case "geel":
$achtergrond = imagecolorallocate($afbeelding, 255, 106, 0);
$voorkantkleur = imagecolorallocate($afbeelding, 255, 216, 0);
break;
case "blauw":
$achtergrond = imagecolorallocate($afbeelding, 0, 0, 125);
$voorkantkleur = imagecolorallocate($afbeelding, 0, 0, 255);
break;
case "paars":
$achtergrond = imagecolorallocate($afbeelding, 33, 0, 127);
$voorkantkleur = imagecolorallocate($afbeelding, 87, 0, 127);
break;
case "rose":
$achtergrond = imagecolorallocate($afbeelding, 178, 0, 255);
$voorkantkleur = imagecolorallocate($afbeelding, 255, 0, 220);
break;
case "grijs":
$achtergrond = imagecolorallocate($afbeelding, 0, 0, 0);
$voorkantkleur = imagecolorallocate($afbeelding, 64, 64, 64);
break;
case "bruinrood":
$achtergrond = imagecolorallocate($afbeelding, 91, 63, 60);
$voorkantkleur = imagecolorallocate($afbeelding, 133, 21, 11);
break;
case "turquoise":
$achtergrond = imagecolorallocate($afbeelding, 0, 148, 255);
$voorkantkleur = imagecolorallocate($afbeelding, 0, 255, 255);
break;
default:
$achtergrond = imagecolorallocate($afbeelding, 0, 125, 0);
$voorkantkleur = imagecolorallocate($afbeelding, 0, 255, 0);
break;
}
$tekstkleur = imagecolorallocate($afbeelding, 255, 255, 255);
$randkleur = imagecolorallocate($afbeelding, 0, 0, 0);
$grootte = round(($procent/100) * $breedte);
// Teken het vierkant op basis van de gegeven procenten
imagefilledrectangle($afbeelding, $border, $border, $grootte - $border - $correctie, $hoogte - $border - $correctie, $voorkantkleur);
// Schrijf het aantal procent op
if(constant("uitlijning") == "links"){
textAlignLeft($afbeelding, $procent . constant("tekens"), $tekstkleur);
} else if(constant("uitlijning") == "rechts"){
textAlignRight($afbeelding, $procent . constant("tekens"), $tekstkleur);
} else{
textAlignCenter($afbeelding, $procent . constant("tekens"), $tekstkleur);
}
imagerectangle($afbeelding, 0, 0, $breedte-1, $hoogte-1, $randkleur);
// Schrijf het bestand naar de browser
header('Content-Type: image/png');
imagepng($afbeelding);
imagedestroy($afbeelding);
} else{
echo '<font face="arial" color="red">Dit is geen geldig getal, of het getal ligt niet tussen de 0 en 100.</font>';
}
}
function textAlignCenter($image, $string, $color) {
global $lettergrootte;
$padding_left = (imagesx($image) - 8 * strlen($string)) / 2;
$padding_top = (imagesy($image) - 14) / 2;
$string_split = explode(".", $string);
$string = $string_split[0].$teken.$string_split[1];
imagestring($image, $lettergrootte, $padding_left, $padding_top, $string, $color);
}
function textAlignLeft($image, $string, $color) {
global $lettergrootte;
$padding_top = (imagesy($image) - 14) / 2;
$string_split = explode(".", $string);
$string = $string_split[0].$teken.$string_split[1];
imagestring($image, $lettergrootte, 8, $padding_top, $string, $color);
}
function textAlignRight($image, $string, $color) {
global $lettergrootte;
$padding_top = (imagesy($image) - 14) / 2;
$padding_left = (imagesx($image) - 8 * strlen($string));
$string_split = explode(".", $string);
$string = $string_split[0].$teken.$string_split[1];
imagestring($image, $lettergrootte, $padding_left, $padding_top, $string, $color);
}
?>
Toon Meer
OOP wil ik dit nog niet maken, omdat ongeveer 99% van alle crimegames die dit gebruiken toch niet OOP gescript is, en het project waar ik het voor wil gebruiken ook niet.
Verder heb ik aan alles voldaan.
Hopelijk is het zo perfect
Nieuwe reactie samengevoegd met originele reactie op 30.12.10 20:11:53:
Killingdevil, kan je hem even vernieuwen, met bovenstaand script
Mooi dat mijn bijdrage nuttig is geweest!
Nog enkele tips:
1. Zet de functies onderaan het script. Goede functies hebben een duidelijke naam en parameterlijst, waardoor je niet meer hoeft te lezen wat ze doen om te weten wat ze doen. En aangezien we van boven naar beneden lezen, is het dan praktischer ze onderaan neer te zetten.
2. Maak geen functies met parameterlijsten van meer dan 3 tot 4 parameters tenzij het echt nodig is. Zulke grote parameterlijsten maken de functie onduidelijk, zie tip 1.
3. Zorg dat functies slechts één ding doen, en dat de naam van de functie dat zo goed mogelijk beschrijft. De tijd van functienamen van maximaal 16 tekens is allang voorbij. Zie wederom tip 1.
4. Vermijd strings voor instelling. Hiervoor zijn constante uitgevonden.
5. Als je het echt goed wilt doen, ga OOP!
Hopelijk heb je hier nog iets aan.
Nieuwe reactie samengevoegd met originele reactie op 30.12.10 17:22:40:
Ps. Ik zal het script in de library zetten, maar wacht dit topic nog even af.
@Killingdevil,
Heel erg bedankt, ik ben weer wat wijzer.
Dan is het zo waarschijnlijk wel goed:
<?php
// Balk generator gemaakt door GrootScripting, bewerkt door Killingdevil
// Verander onderstaande variabelen naar je eigen wensen
$maxdecimalen = 2; // Geef hier het maximaal aantal decimalen op, 0 is hele getallen
$breedte = 152; // Afbeeldingsbreedte
$hoogte = 17; // Afbeeldingshoogte
$border = 1; // Omlijningsbreedte
$correctie = 1; // Eventuele correctie voor de onderkant en rechterkant, bij sommige webservers nodig, zet op 0 voor geen veranderingen.
$tekens = '% Groentje'; // Eventuele tekens weergeven achter het aantal procent (zoals het procent teken etc.)
$lettergrootte = 3; // 3 is standaard, mag maximaal 5 zijn en minimaal 1. (de uitlijning kan s bij sommige lettergroottes niet kloppen, dan moet je in de functies iets aanpassen).
// Verander onderstaande constanten naar eigen waarde
define("tekens", "% Groentje"); // Eventuele tekens weergeven achter het aantal procent (zoals het procent teken etc.)
define("uitlijning", "links"); // Hoe de tekst uitgelijnd moet worden, kan de waardes "centreer", 'links' of 'rechts' bevatten, standaardwaarde is "centreer"
define("scheidingsteken", "."); // Teken om decimalen te scheiden in de output, input moet wel met punten.
// HIERONDER ALLEEN AANPASSEN ALS JE WEET WAT JE DOET!!!
$procent = $_GET['procent'];
$split = explode('.', $procent);
if(strlen($split[1]) > $maxdecimalen){
echo '<font color="red" face="arial">Je mag maximaal <b>'.$maxdecimalen.' decimalen</b> gebruiken, jij gebruikt nu <b>'.strlen($split[1]).' decimalen</b>.</font>';
} else{
if(is_numeric($procent) && $procent >= 0 && $procent <= 100){
// Maak de achtergrond afbeelding (125x17)
$afbeelding = imagecreate($breedte, $hoogte);
// Definieër de kleuren
switch($_GET['stijl']){
case "rood":
$achtergrond = imagecolorallocate($afbeelding, 125, 0, 0);
$voorkantkleur = imagecolorallocate($afbeelding, 255, 0, 0);
break;
case "geel":
$achtergrond = imagecolorallocate($afbeelding, 255, 106, 0);
$voorkantkleur = imagecolorallocate($afbeelding, 255, 216, 0);
break;
case "blauw":
$achtergrond = imagecolorallocate($afbeelding, 0, 0, 125);
$voorkantkleur = imagecolorallocate($afbeelding, 0, 0, 255);
break;
case "paars":
$achtergrond = imagecolorallocate($afbeelding, 33, 0, 127);
$voorkantkleur = imagecolorallocate($afbeelding, 87, 0, 127);
break;
case "rose":
$achtergrond = imagecolorallocate($afbeelding, 178, 0, 255);
$voorkantkleur = imagecolorallocate($afbeelding, 255, 0, 220);
break;
case "grijs":
$achtergrond = imagecolorallocate($afbeelding, 0, 0, 0);
$voorkantkleur = imagecolorallocate($afbeelding, 64, 64, 64);
break;
case "bruinrood":
$achtergrond = imagecolorallocate($afbeelding, 91, 63, 60);
$voorkantkleur = imagecolorallocate($afbeelding, 133, 21, 11);
break;
case "turquoise":
$achtergrond = imagecolorallocate($afbeelding, 0, 148, 255);
$voorkantkleur = imagecolorallocate($afbeelding, 0, 255, 255);
break;
default:
$achtergrond = imagecolorallocate($afbeelding, 0, 125, 0);
$voorkantkleur = imagecolorallocate($afbeelding, 0, 255, 0);
break;
}
$tekstkleur = imagecolorallocate($afbeelding, 255, 255, 255);
$randkleur = imagecolorallocate($afbeelding, 0, 0, 0);
$grootte = round(($procent/100) * $breedte);
// Teken het vierkant op basis van de gegeven procenten
imagefilledrectangle($afbeelding, $border, $border, $grootte - $border - $correctie, $hoogte - $border - $correctie, $voorkantkleur);
// Schrijf het aantal procent op
if(constant("uitlijning") == "links"){
textAlignLeft($afbeelding, $procent . constant("tekens"), $tekstkleur);
} else if(constant("uitlijning") == "rechts"){
textAlignRight($afbeelding, $procent . constant("tekens"), $tekstkleur);
} else{
textAlignCenter($afbeelding, $procent . constant("tekens"), $tekstkleur);
}
imagerectangle($afbeelding, 0, 0, $breedte-1, $hoogte-1, $randkleur);
// Schrijf het bestand naar de browser
header('Content-Type: image/png');
imagepng($afbeelding);
imagedestroy($afbeelding);
} else{
echo '<font face="arial" color="red">Dit is geen geldig getal, of het getal ligt niet tussen de 0 en 100.</font>';
}
}
function textAlignCenter($image, $string, $color) {
global $lettergrootte;
$padding_left = (imagesx($image) - 8 * strlen($string)) / 2;
$padding_top = (imagesy($image) - 14) / 2;
$string_split = explode(".", $string);
$string = $string_split[0].$teken.$string_split[1];
imagestring($image, $lettergrootte, $padding_left, $padding_top, $string, $color);
}
function textAlignLeft($image, $string, $color) {
global $lettergrootte;
$padding_top = (imagesy($image) - 14) / 2;
$string_split = explode(".", $string);
$string = $string_split[0].$teken.$string_split[1];
imagestring($image, $lettergrootte, 8, $padding_top, $string, $color);
}
function textAlignRight($image, $string, $color) {
global $lettergrootte;
$padding_top = (imagesy($image) - 14) / 2;
$padding_left = (imagesx($image) - 8 * strlen($string));
$string_split = explode(".", $string);
$string = $string_split[0].$teken.$string_split[1];
imagestring($image, $lettergrootte, $padding_left, $padding_top, $string, $color);
}
?>
Toon Meer
OOP wil ik dit nog niet maken, omdat ongeveer 99% van alle crimegames die dit gebruiken toch niet OOP gescript is, en het project waar ik het voor wil gebruiken ook niet.
Verder heb ik aan alles voldaan.
Hopelijk is het zo perfect
Nieuwe reactie samengevoegd met originele reactie op 30.12.10 20:11:53:
Killingdevil, kan je hem even vernieuwen, met bovenstaand script
Heb je nog geen account? Registreer je nu en word deel van onze community!