[PHP] Image probleemje: tekst in n vakje

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • KrnKje
  • Registratie: Januari 2001
  • Laatst online: 13-09 09:20
Ik ben nu net begonnen aan een e-card systeempje voor n website. Het gaat wel vlot zoals het moet gaan, maar natuurlijk komen we bij mijn eerste probleem aan.

In een e-card moet dus de tekst in een vakje komen te staan, dit vakje heeft afmetingen X*Y, stel 175*269(zie voorbeeld pix). Als hierin een tekst moet komen staan met lettertype verdana op size 12 dan is een letter 12 pix hoog. Dat is geen probleem, de regels staan netjes onder elkaar, maar de breedte van een letter verschilt. Als iemand denkt leuk te zijn en alleen brede letters invoert dan verneukt het dus de card, ik heb dus als oplossing dat de breedste letter als 1 breedte telt. Dit is de W en deze is dan 13 pix breed, per regel kunnen er dus 175/13=13 letters staan. Dit geeft in het geval van dus alleen w's het volgende:

Afbeeldingslocatie: http://www.lancentre.nl/troep/krnkje1/ecard1.jpg
Let niet op de geweldige kaart :P

Máár, daar komt dus het probleem, nu voer iemand een text in zoals het bedoelt is, gewoon een normale regel, dan krijg je dus dit:

Afbeeldingslocatie: http://www.lancentre.nl/troep/krnkje1/ecard.jpg

Precies, het probleem zit em dus in die 13 tekens die als maximum zijn. Nu kan ik wel per letter gaan op gaan tellen hoeveel breedte ie inneemt van het border en als ie dan aan het eind is deze afkappen, maar dit moet vast makkelijker kunnen.(Hoop ik)
Iemand die hier een oplossing voor weet?

Acties:
  • 0 Henk 'm!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
Je wil de breedte hebben per letter? volgens mij is daar een speciale functie voor in GD. www.php.net/manual dan maar ;)

Acties:
  • 0 Henk 'm!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29

Acties:
  • 0 Henk 'm!

  • KrnKje
  • Registratie: Januari 2001
  • Laatst online: 13-09 09:20
MisterData schreef op 15 november 2002 @ 17:49:
Je wil de breedte hebben per letter? volgens mij is daar een speciale functie voor in GD. www.php.net/manual dan maar ;)
Nee dat wil ik niet :)
Mijn vraag is dus of er niet een makkelijkere manier is...

Acties:
  • 0 Henk 'm!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
Dan doe je het toch met een loop, die per karakter gaat schrijven naar het plaatje, en als je dan voorbij een bepaalde x komt, dan maak je een nieuwe regel:
code:
1
2
3
4
5
6
7
8
9
10
11
$text = "blaatblaatblaat";
$regellength = 0;

foreach letter in string:
$regellength += char_width($letter);
if $regellength > 300
  $regellength = 0
//nieuwe regel maken
else
// printen
endif


Beetje brakke pseudocode, hoop dat het idee duidelijk is ;)

Owjah, char_width() bestaat in het 'echt' natuurlijk niet :) Moet je even de goede functie voor hebben.

Acties:
  • 0 Henk 'm!

  • KrnKje
  • Registratie: Januari 2001
  • Laatst online: 13-09 09:20
Uuhm, dit is een oplossing wanneer er gewoon wat onzin staat, maar hij moet dus wanneer een woord te lang is het hele woord naar de regel er onder verplaatsen, dat kan dus zo lekker met wordwrap()... Dat lukt met dit niet zow...

Acties:
  • 0 Henk 'm!

  • KrnKje
  • Registratie: Januari 2001
  • Laatst online: 13-09 09:20
KrnKje schreef op 15 November 2002 @ 17:58:
Uuhm, dit is een oplossing wanneer er gewoon wat onzin staat, maar hij moet dus wanneer een woord te lang is het hele woord naar de regel er onder verplaatsen, dat kan dus zo lekker met wordwrap()... Dat lukt met dit niet zow...
I take the point... Kga ermee aan de slag...

THNX

Acties:
  • 0 Henk 'm!

  • KrnKje
  • Registratie: Januari 2001
  • Laatst online: 13-09 09:20
Nieuw probleem... bij wat voor letter dan ook geeft imagefontwidth() de waarde 5 terug... Heb ik dus nogal vrij weinig aan...

Acties:
  • 0 Henk 'm!

  • corani
  • Registratie: December 2000
  • Laatst online: 05-10-2017

corani

__,,,_(^_^)_,,,__

gebruik anders een fixed-width font.. ben je van het probleem af :)

Laat me nou toch eens met rust man!
Iedereen die in telekinese gelooft, steek a.u.b. mijn hand op


Acties:
  • 0 Henk 'm!

  • KrnKje
  • Registratie: Januari 2001
  • Laatst online: 13-09 09:20
corani schreef op 15 november 2002 @ 18:36:
gebruik anders een fixed-width font.. ben je van het probleem af :)
Jah hallow, het moet er wel leuk uit zien hè...

Acties:
  • 0 Henk 'm!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
KrnKje schreef op 15 november 2002 @ 18:33:
Nieuw probleem... bij wat voor letter dan ook geeft imagefontwidth() de waarde 5 terug... Heb ik dus nogal vrij weinig aan...
Jah klopt, dat is voor het hele font :) Zal vast ook wel een andere functie voor bestaan. Zoek anders es op 'font metrics' wedden dat je iets terugkrijgt ;)

Acties:
  • 0 Henk 'm!

  • corani
  • Registratie: December 2000
  • Laatst online: 05-10-2017

corani

__,,,_(^_^)_,,,__

KrnKje schreef op 15 november 2002 @ 18:41:
[...]

Jah hallow, het moet er wel leuk uit zien hè...
Er zijn vast wel leuke fixed-width fonts te vinden :)

Laat me nou toch eens met rust man!
Iedereen die in telekinese gelooft, steek a.u.b. mijn hand op


Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

is het geen idee, om een mooi DIVje te gebruiken, dan heb je hier helemaal geen last van ;)

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

Verwijderd

thomaske schreef op 15 November 2002 @ 20:06:
is het geen idee, om een mooi DIVje te gebruiken, dan heb je hier helemaal geen last van ;)
Waar heb jij het in godsnaam over?

Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

Verwijderd schreef op 16 november 2002 @ 01:01:
[...]

Waar heb jij het in godsnaam over?
ipv het genereren van de tekst in een image, kan je het ook gewoon met html/css oplossen

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • Prutser_IA
  • Registratie: Januari 2000
  • Laatst online: 03-06-2021

Prutser_IA

<*{{{><

thomaske schreef op 16 november 2002 @ 02:02:
[...]


ipv het genereren van de tekst in een image, kan je het ook gewoon met html/css oplossen
idd, Het kan op een simpele manier worden opgelost door een layer met daar de tekst in ( vandaar een DIV'je).
Wat je zelfs nog doen kan is het maken van een textarea in dat divje zodat je nog kan scrollen ook ( weet, kan met layers ook..)

42


Acties:
  • 0 Henk 'm!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
Prutser_IA schreef op 16 november 2002 @ 08:17:
[...]


idd, Het kan op een simpele manier worden opgelost door een layer met daar de tekst in ( vandaar een DIV'je).
Wat je zelfs nog doen kan is het maken van een textarea in dat divje zodat je nog kan scrollen ook ( weet, kan met layers ook..)
Maar meneer topicstarter wil helemaal geen HTML genereren, maar een plaatje (met GD). Daar kun je geen HTML in gebruiken :)

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Daar komt bij dat wanneer je HTML gebruikt je afhankelijk bent van de fonts c.q. browsers van de client, en dat wil je niet met een e-card

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

Is het geen idee om in een array de width van alle characters te zetten en dan maar wrappen?

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Je kan evt je string opsplitsen in woorden en dan kijken hoe groot de bounding box per woord is.
Aan de hand daarvan kan je vrij eenvoudig bijhouden hoe breed je string al is en of het nieuwe woord er nog bijpast.
Voor woorden die in hun geheel langer zijn kan je nog een terugtellende loop maken die een voor een een letter afknipt en zo twee losse woorden voor je maakt (vergeet niet het koppel-streepje erbij te tellen :P )

Acties:
  • 0 Henk 'm!

  • KrnKje
  • Registratie: Januari 2001
  • Laatst online: 13-09 09:20
Hmm thnx nog voor alle hulp, ik denk dat ik hiermee wel n stukje vooruit kan komen. Ik ga eerst wel even die bounding box proberen en als dat niet lukt wel die laatste oplossing om dus alle widths in een array te zetten... lekker meten :|
Pagina: 1