Gd libary - Text centeren!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
header("content-type: image/gif");
$image = ImageCreateFromgif("images/achter.GIF");
$grootte = 7;
$tekst = $_GET['habbo'];
$kleur = ImageColorAllocate($image, 255, 255, 255);
$font = 'fonts/Volter.ttf';
ImageTTFText($image, $grootte, 0, 23, 78, $kleur, $font, $tekst);
ImageGif($image);
ImageDestroy($image);
?>
header("content-type: image/gif");
$image = ImageCreateFromgif("images/achter.GIF");
$grootte = 7;
$tekst = $_GET['habbo'];
$kleur = ImageColorAllocate($image, 255, 255, 255);
$font = 'fonts/Volter.ttf';
ImageTTFText($image, $grootte, 0, 23, 78, $kleur, $font, $tekst);
ImageGif($image);
ImageDestroy($image);
?>
Maar er staat nu tekst in, en bij elke naam dat hij weergeeft heeft het een andere lengte. Kan ik de text ook centeren? Heeft iemand een oplossing?
Gewijzigd op 01/01/1970 01:00:00 door Marnix Peters
Mijo ontgaat voledig warom je een ImageCreate From gif doet, ook als content-type een image/gif opgeeft en dan een ImagePng commando uitvoert.
Maar kan je verder helpen?
Ik heb het script wat veranderd, mischien nu wat beter, maar ik heb nog steeds het zelfde probleem!
Probleem opgelost, nu heb ik nieuw probleem, lees verder! :)
imagettfbbox() vervolgens kan je dmv berekeningen centreren.
Kijk ook eens naar de methode addText in dit script van mij.
Om tekst te centreren, kan je de omvang van de tekst berekenen met: Kijk ook eens naar de methode addText in dit script van mij.
Zou je het een klein beetje proberen toe te voegen in het script?
Iets duidelijker graag, wat snap je niet, denk dat ik het niet duidelijker kan maken dan mijn script...
Ik heb het bekeken, maar hoe center je het?
Kan jij het anders proberen in te voegen?
Wat je moet doen is het volgende:
- de functie imagettfbbox() geeft de breedte + hoogte van de tekst.
- de functies imagesx() & imagesy() geven de breedte en hoogte van het plaatjes waar te tekst op moet komen.
- nu kan je met een rekensom het midden van het plaatje bepalen.
- door de helft van de breedte van de tekst te nemen en die van het midden van het plaatje af te halen, weet je hoeveel pixels van links je tekst moet verschijnen.
- doe het zelfde voor de hoogte.
- vervolgens gebruik je de zojuist uitgerekende coördinaten om met de standaard functie imagettftext() de tekst daadwerkelijk op het plaatje te zetten.
et voila!
Het lastige zit 'm dus in de reken som en niet in de php.
Edit:
Overigens kan je ook gewoon mijn class gebruiken, dan hoef je het helemaal niet meer te maken, zit zelfs al een voorbeeld bij. Overigens moet je dan wel PHP 5 hebben.
(En het zou een goede oefening zijn om het zelf te doen, als je tenminste php wil leren.)
(En het zou een goede oefening zijn om het zelf te doen, als je tenminste php wil leren.)
Gewijzigd op 01/01/1970 01:00:00 door Bo az
marnix schreef op 01.08.2007 17:39:
Bedankt, maar ik snap het niet helemaal.
Zou je het een klein beetje proberen toe te voegen in het script?
Zou je het een klein beetje proberen toe te voegen in het script?
Binnen 3 minuten, kom op..
In een notendopje.
@Gerjo, dat zou betekenen dat je alleen monospace lettertypes kan gebruiken. Bij bijvoorbeeld Arial is namelijk de w breder dan de v en gaat je reken som dus al niet op.
Gewijzigd op 01/01/1970 01:00:00 door Gerard M
Boaz schreef op 01.08.2007 20:40:
Ik heb niet veel zin om het te gaan voorkauwen, een klein beetje eigen initiatief stel ik wel op prijs.
Wat je moet doen is het volgende:
- de functie imagettfbbox() geeft de breedte + hoogte van de tekst.
- de functies imagesx() & imagesy() geven de breedte en hoogte van het plaatjes waar te tekst op moet komen.
- nu kan je met een rekensom het midden van het plaatje bepalen.
- door de helft van de breedte van de tekst te nemen en die van het midden van het plaatje af te halen, weet je hoeveel pixels van links je tekst moet verschijnen.
- doe het zelfde voor de hoogte.
- vervolgens gebruik je de zojuist uitgerekende coördinaten om met de standaard functie imagettftext() de tekst daadwerkelijk op het plaatje te zetten.
et voila!
Het lastige zit 'm dus in de reken som en niet in de php.
Wat je moet doen is het volgende:
- de functie imagettfbbox() geeft de breedte + hoogte van de tekst.
- de functies imagesx() & imagesy() geven de breedte en hoogte van het plaatjes waar te tekst op moet komen.
- nu kan je met een rekensom het midden van het plaatje bepalen.
- door de helft van de breedte van de tekst te nemen en die van het midden van het plaatje af te halen, weet je hoeveel pixels van links je tekst moet verschijnen.
- doe het zelfde voor de hoogte.
- vervolgens gebruik je de zojuist uitgerekende coördinaten om met de standaard functie imagettftext() de tekst daadwerkelijk op het plaatje te zetten.
et voila!
Het lastige zit 'm dus in de reken som en niet in de php.
Edit:
Overigens kan je ook gewoon mijn class gebruiken, dan hoef je het helemaal niet meer te maken, zit zelfs al een voorbeeld bij. Overigens moet je dan wel PHP 5 hebben.
(En het zou een goede oefening zijn om het zelf te doen, als je tenminste php wil leren.)
(En het zou een goede oefening zijn om het zelf te doen, als je tenminste php wil leren.)
Het lukt me wel om de text in het midden te krijgen.
Maar je moet bij het script je naam invullen en die hebben allemaal verschillende tekens, de ene naam is langer dan de andere.
Dus dan krijg je het niet steeds in het midden.
De class hoef ik niet, want anders moet ik het hele script opnieuw bouwen, sorry! :P
Arjan Kapteijn schreef op 01.08.2007 20:45:
Binnen 3 minuten, kom op..
marnix schreef op 01.08.2007 17:39:
Bedankt, maar ik snap het niet helemaal.
Zou je het een klein beetje proberen toe te voegen in het script?
Zou je het een klein beetje proberen toe te voegen in het script?
Binnen 3 minuten, kom op..
Als ik het snap kan ik het toch ook niet uitvoeren?
Ik doe me best!
Gewijzigd op 01/01/1970 01:00:00 door Marnix Peters
Gerjo schreef op 01.08.2007 21:24:
@Boaz, ja dat klopt helemaal. Je zou dan een stukje dummy tekst kunnen tekenen met imageftbbox, en aan de hand van de geretourneerde waardes van imageftbbox de tekst breedte kunnen berekenen.
Dit is nu precies wat ik de hele tijd probeer uit te leggen aan de TS, alleen dan niet met dummy tekst, maar gewoon met de echte tekst.
marnix:
Het lukt me wel om de text in het midden te krijgen.
Maar je moet bij het script je naam invullen en die hebben allemaal verschillende tekens, de ene naam is langer dan de andere.
Dus dan krijg je het niet steeds in het midden.
Maar je moet bij het script je naam invullen en die hebben allemaal verschillende tekens, de ene naam is langer dan de andere.
Dus dan krijg je het niet steeds in het midden.
Daarvoor heb je nu precies de manual, heb je nu al eens de functie beschrijving van imagettfbbox() doorgelezen? Daar lijkt het namelijk niet erg op, anders hand je dit probleem al wel opgelost vermoedt ik.
Ik begin er steeds minder van te snappen!