[PHP] Probleem met text in image

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ToySoldier1992
  • Registratie: September 2009
  • Laatst online: 29-08-2019
Voor een site die ik op het moment aan het maken ben, ben ik met GD bezig om tekst in een afbeelding weer te geven. De tekst hoeft niet over 2 regels verspreid te worden, maar de breedte van de afbeelding moet even breed zijn als de tekst breed is, zelfde voor de hoogte.

Hoe kan ik dit het beste bereiken? Ik het afgelopen uur al bezig geweest met op Google te zoeken, zelf te prutsen en andere mensen vragen, maar ik kom er echt niet uit hoe ik dit fatsoenlijk kan oplossen.

Suggesties, alsjeblieft? :)

Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Als je een standaard GD font gebruikt is het vrij simpel om dat enigszins netjes te doen. Bepaal de breedte van de breedste letter (w of m) en doe dat maal het aantal karakters, dat is dan de breedte van je afbeelding. Daar kan je dan gewoon de tekst gecentreerd opzetten.

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

AtleX schreef op vrijdag 10 december 2010 @ 16:08:
Als je een standaard GD font gebruikt is het vrij simpel om dat enigszins netjes te doen. Bepaal de breedte van de breedste letter (w of m) en doe dat maal het aantal karakters, dat is dan de breedte van je afbeelding. Daar kan je dan gewoon de tekst gecentreerd opzetten.
Sowieso heeft de GD-library hier een functie voor, maar als je dan veel relatief smalle letters hebt bij een proportioneel font dan wordt je halve afbeelding blanco.

Je kunt beter imagettfbbox gebruiken, de tweede hit op [Google=php gd get text width]...

[ Voor 12% gewijzigd door CodeCaster op 10-12-2010 16:14 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

CodeCaster schreef op vrijdag 10 december 2010 @ 16:14:
[...]

Sowieso heeft de GD-library hier een functie voor, maar als je dan veel relatief smalle letters hebt bij een proportioneel font dan wordt je halve afbeelding blanco.
Volgens mij is het ingebouwde font een monospace font.

[edit]
Waardoor je dus de breedte van de breedste letter niet meer hoeft te bepalen. 8)7 :P

[ Voor 25% gewijzigd door AtleX op 10-12-2010 16:18 ]

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
AtleX schreef op vrijdag 10 december 2010 @ 16:08:
Als je een standaard GD font gebruikt is het vrij simpel om dat enigszins netjes te doen. Bepaal de breedte van de breedste letter (w of m) en doe dat maal het aantal karakters, dat is dan de breedte van je afbeelding. Daar kan je dan gewoon de tekst gecentreerd opzetten.
Maar dan pas je het plaatje niet *exact* sluitend aan op de tekst, aangezien je praktisch per elke letter pixels overhoudt. Ah, monospace, daar ging ik ff niet vanuit gezien je "breedte letter"-verhaal :+

Je zou natuurlijk per character de breedte op kunnen slaan ergens in een DB ofzo per font. Of als je heel veel aparte, diverse fonts gebruikt waar dat onhandig voor is, zou je wellicht een ruwe schatting kunnen maken a.d.v. bijv. het breedste character en vervolgens een tijdelijk plaatje maken met transparantie o.i.d. en vervolgens daaruit bepaalt hoe ver naar rechts de tekst uiteindelijk komt, waarna je een rechthoek uit dat tijdelijk plaatje kunt knippen om vervolgens daarmee verder te werken. Heeey, PHP heeft daar dus blijkbaar een functie voor, gezien CC's post :+

Ik ben o.a. ook meer benieuwd naar de achtergrond van de vraag :)

[ Voor 6% gewijzigd door Osiris op 10-12-2010 16:20 ]


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

AtleX schreef op vrijdag 10 december 2010 @ 16:18:
[...]

Volgens mij is het ingebouwde font een monospace font.

[edit]
Waardoor je dus de breedte van de breedste letter niet meer hoeft te bepalen. 8)7 :P
Dan maakt het inderdaad niet uit, maar wat jij zegt gaat in principe alleen op voor imagestring.

Met imagettftext kun je ook schrijven met je eigen fonts en dus ook proportionele fonts.

[ Voor 5% gewijzigd door CodeCaster op 10-12-2010 16:23 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Daarom heb ik het in mijn eerste post ook over het standaard font van gd. ;)

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • ToySoldier1992
  • Registratie: September 2009
  • Laatst online: 29-08-2019
Ik gebruik al imagettfbox, maar het is me niet geheel duidelijk hoe die functie werkt wat de breedte van een font opmeet: Geeft die de breedte van de breedste letter terug?

[Edit]
Lezen is lastig :p

Met imagettfbox zou het moeten lukken.

[ Voor 18% gewijzigd door ToySoldier1992 op 10-12-2010 16:36 ]

Pagina: 1