[PHP] Text stroken met GD lib.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • mcdronkz
  • Registratie: Oktober 2003
  • Laatst online: 16-04 12:44
Ik ben bezig met een script dat afbeeldingen die ik op m'n site zet direct voorziet van een label. Nu gaat dat best eenvoudig, maar ik stuit op één probleem. Ik wil een rand om m'n tekst heen, van zegmaar 3px breed.

Nu zou je zeggen, dan zet je dezelfde tekst er toch gewoon achter, maar dan 3px breder ? Maar nee, dat geeft niet het gewenste resultaat. Ik heb een zoektocht gedaan of er functies zijn die dit kunnen, maar ik heb tot nog toe niks kunnen vinden. Ik gebruik imagettftext om tekst op afbeeldingen te plaatsen.

Er moet toch een betere manier zijn als het plaatsen van zo'n 10 layers onder de tekst met verschillende coördinaten ?

Heeft iemand enig idee hoe ik dit ga realiseren ?

[ Voor 9% gewijzigd door mcdronkz op 09-01-2008 22:55 . Reden: iets toegevoegd ]


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Je wilt je font niet groter maken, dan klopt onder andere de letterafstand niet meer.
Je moet gewoon je text verplaatsen over de x en y-as

Plaats de tekst op de volgende punten in de volgende kleuren;
xykleur
11zwart
21zwart
31zwart
12zwart
32zwart
13zwart
23zwart
33zwart
22wit

En je hebt een witte tekst omringt met een zwarte rand

//edit
Nee dus, er is geen 'betere' manier. Al zie ik niet direct wat slecht is aan deze manier.
Uiteraard zou je er zelf een imagettftextshadowed()-functie van moeten maken

[ Voor 10% gewijzigd door frickY op 09-01-2008 22:58 ]


Acties:
  • 0 Henk 'm!

  • mcdronkz
  • Registratie: Oktober 2003
  • Laatst online: 16-04 12:44
frickY schreef op woensdag 09 januari 2008 @ 22:57:
Je wilt je font niet groter maken, dan klopt onder andere de letterafstand niet meer.
Je moet gewoon je text verplaatsen over de x en y-as

Plaats de tekst op de volgende punten in de volgende kleuren;
[..]

En je hebt een witte tekst omringt met een zwarte rand

//edit
Nee dus, er is geen 'betere' manier. Al zie ik niet direct wat slecht is aan deze manier.
Uiteraard zou je er zelf een imagettftextshadowed()-functie van moeten maken
Okay, dat werkt wel, maar het is natuurlijk vrij "onhandig", als je begrijpt wat ik bedoel. Misschien moet ik dan maar iets verzinnen met een for-loop wat het werk een beetje uit handen neemt.

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Hard 9 calls naar imagettftext is inderdaad 'onhandig', en lijkt mij ook niet de bedoeling nee.
Maar met iets als het volgende is imho weinig mis?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
function imagettftextshadowed($image , $size , $angle , $x , $y , $color , $fontfile , $text , $shadowSize, $shadowColor ) {
   $centerX = round($shadowSize / 2);
   $centerY = round($shadowSize / 2);
   for($yPos = 1; $yPos <= $shadowSize ; $yPos ++) {
      for($xPos = 1; $xPos <= $shadowSie; $xPos ++) {
         if($xPos != $centerX && $yPos != $centerY) {
            imagettftext($image , $size , $angle , $xPos , $yPos , $shadowColor , $fontfile , $text);
         }
      }
   }
   imagettftext($image , $size , $angle , $xPos , $yPos , $color , $fontfile , $text);
}


Klopt natuurlijk niet geheel. $xPos en $yPos moeten relatief zijn aan $x en $y, maar het idee lijkt me duidelijk.

[ Voor 7% gewijzigd door frickY op 09-01-2008 23:30 ]


Acties:
  • 0 Henk 'm!

  • mcdronkz
  • Registratie: Oktober 2003
  • Laatst online: 16-04 12:44
Hier ga ik het inderdaad wel mee redden, dankjewel !

Acties:
  • 0 Henk 'm!

  • mcdronkz
  • Registratie: Oktober 2003
  • Laatst online: 16-04 12:44
Overigens baal ik er wel van dat m'n hoster geen ImageMagick ondersteunt, daar kun je de meest bizarre dingen mee doen;

http://www.imagemagick.org/Usage/fonts/
Pagina: 1