[PHP/GD] Tekst roteren

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Kayshin
  • Registratie: Juni 2004
  • Laatst online: 09-03-2018

Kayshin

Bl@@T @@P!!!

Topicstarter
Ik heb het volgende probleem: Ik ben in PHP een weerbericht aan het maken met GD, waarbij de temperatuur, hoeveelheid bewolking en de wind wordt gezet.

Bij de wind heb ik de snelheid en de richting. Ik heb nu uit het windings font een pijltje gehaald om weer te geven voor de windrichting, welke ik dan wil draaien naar gelang de richting. Standaard is dit een pijltje omhoog, maar bijvoorbeeld bij ZO wind moet deze 225 graden gedraaid worden.

Omdat een rotatie over de linkeronderhoek gaat, draait hij hem dus niet goed, wat ik heb proberen op te lossen met een stukje code dat het middelpunt pakt, en hem hier omheen draait, Alleen pakt hij dit middelpunt niet.

PHP:
1
2
3
4
5
6
7
8
9
10
11
function imagettftext_cr( &$im , $size , $angle , $x , $y , $color , $fontfile , $text ){
  $bbox = imagettfbbox($size, $angle, $fontfile, $text);

  $dx = ( $bbox[2] - $bbox[0] ) / 2.0 - ( $bbox[2] - $bbox[4] ) / 2.0;
  $dy = ( $bbox[3] - $bbox[1] ) / 2.0 + ( $bbox[7] - $bbox[1] ) / 2.0;

  $px = $x-$dx;
  $py = $y-$dy;

  return imagettftext( $im , $size , $angle , $px , $py , $color , $fontfile , $text );
}


Heb al gedebugd door te kijken waar hij het middelpunt precies pakt, maar deze past zich steeds aan.

My personal videoteek: -Clique-; -NMe- is een snol!


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Misschien is het makkelijker als je met een hulpimage werkt. Maak een image dat groot genoeg is om precies die pijl te bevatten in elke richting. Vervolgens druk je die pijl erop af en draai je hem in de goede richting met imagerotate (die functie neemt namelijk wel het middenpunt als rotatie-as), en vervolgens kopiëer je die hulpimage gewoon op je eigenlijke image op de locatie waar je hem hebben wil. :)

Het kan overigens vast ook wel op de manier die je nu probeert, maar ik ben niet zo sterk in wiskunde. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Ik zou inderdaad ook een afbeelding pakken welke je in je weerbericht-afbeelding plakt. Desnoods maak je eerst een afbeelding van de webding-pijl en roteer je die afbeelding, maar je kunt elke willekeurige afbeelding als pijl gebruiken. Opent dus mogelijkheden qua design :)

Acties:
  • 0 Henk 'm!

Verwijderd

offtopic:
Never mind, kill me if you want to..

[ Voor 94% gewijzigd door Verwijderd op 15-06-2005 14:55 ]


Acties:
  • 0 Henk 'm!

  • Kayshin
  • Registratie: Juni 2004
  • Laatst online: 09-03-2018

Kayshin

Bl@@T @@P!!!

Topicstarter
Hebben we al geprobeerd, het is een png, waar we geprobeerd hebben een transparent background png op te zetten, maar hij gaf evengoed een background aan. Als dit zou werken zou dit wel handig zijn, maar we willen het liefste werken met zo min mogelijk extrene bestanden, zoals plaatjes oid.

Het is toch ook mogelijk om een plaatje te creeren van een "letter" en deze meteen te gebruiken of niet? Kan ik dan de achtergrond ook doorzichtig maken?

My personal videoteek: -Clique-; -NMe- is een snol!


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Gewoon een plaatje maken met een transparante achtergrond (ik geloof dat dat standaard is, en anders: kijk hier en hier), daar de tekst pijl op zetten, roteren en op het grote plaatje stempelen. Daarna kun je dat hulpplaatje weer destroyen. In de tussentijd hoef je die file natuurlijk niet op te slaan, kan allemaal vanuit het geheugen. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1