[PHP] GD Verschil tussen PHP op Windows en *nix *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben niet zo lang geleden aan de slag gegaan met GD in PHP en heb het artikel van Vincent Driessen gelezen over "Dynamische Plaatjes" op PHPFreakz.

Op mijn localhost werkte het allemaal perfect en de tekst die ik op het plaatje liet zetten stond er exact goed op.
Ik ging dit toen uploaden naar mijn hosting. Daar stond de tekst ineens scheef. De 1ste regel tekst stond maar voor de helft aan de linkerkant erop en de 2de regel tekst stond er aan de rechterkant voor de helft erop.

Ik heb de volgende regel ff laten debuggen:
$box = ImageTTFBBox(10, 0, $font, $text1);

Daar kreeg ik op mijn localhost de volgende waarden uit:
0: -1
1: 21
2: 154
3: 21
4: 154
5: -11
6: -1
7: -11

Op de hosting kwamen daar heel andere waarden uit:
0: 0
1: 23
2: 320
3: 23
4: 320
5: -11
6: 0
7: -11

Korte legenda:
0: x-coordinaat van de linkeronderhoek
1: y-coordinaat van de linkeronderhoek
2: x-coordinaat van de rechteronderhoek
3: y-coordinaat van de rechteronderhoek
4: x-coordinaat van de rechterbovenhoek
5: y-coordinaat van de rechterbovenhoek
6: x-coordinaat van de linkerbovenhoek
7: y-coordinaat van de linkerbovenhoek

Het echte verschil zit em bij nummer 4 (x-coordinaat van de rechterbovehoek). Waar komt dit verschil vandaan? Hoe kan dit?

Even om de verschillen te laten zien:
http://cyberguy.entar.org/gd/goa2.php
http://www.darkjedibrotherhood.com/goa/goa2.php

De coding van deze 2 zijn EXACT hetzelfde.

De hosting waar ik het naar geupload had is een Windows based hosting (dus IIS met een PHP als CGI geladen. GD staat dus ge-enabled). Als ik het upload naar een andere hosting (die is gewoon Unix based), dan doet ie het wel goed.

Kan daar het probleem zitten? En hoe zou ik het dan op moeten lossen, want hosting veranderen is geen optie.

Alvast Bedankt.

Met vriendelijke groet,
CyberGuy

[ Voor 7% gewijzigd door Verwijderd op 02-05-2004 22:31 ]


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 20-09 18:51
Ik denk dat GD in de war raakt van de gebruikte newline characters. Onder DOS/Windows bestaan een newline character uit twee bytes: een cariage return ('\r', terug naar het begin van de regel) gevolgd form feed ('\n', naar de volgende regel); onder UNIX bestaat een newline character uit alleen het form feed karakter. Onder Windows krijg je dan het gedrag dat de cursor wel naar onder, maar niet naar links wordt verplaatst. Dat is in jouw verkeerde plaatje ook goed te zien.

De kans is dus groot dat je het oplost door een carriage return karakter in te voegen. Dat kan bijvoorbeeld in PHP met:
code:
1
$tekst = str_replace("\n", "\r\n", $tekst);


edit:
Je document headers staan trouwens niet goed. Nu zijn de plaatjes alleen zichtbaar in Internet Explorer. Elke fatsoenlijke browser laat ze bij gebrek aan een correcte content-type header als tekst (ofzo) zien.

[ Voor 18% gewijzigd door Soultaker op 02-05-2004 22:37 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat was em inderdaad.
Hardstikke bedankt.
Ik heb de plaatjes nog ff op het oude latne staan, zodat andere mensen ook nog eventueel het verschil kunnen zien.

En die headers zal k ook ff nakijken.

Acties:
  • 0 Henk 'm!

  • Kippenijzer
  • Registratie: Juni 2001
  • Laatst online: 26-08 09:08

Kippenijzer

McFallafel, nu met paardevlees

als je ze identiek wilt hebben moet je hopen dat ze beide truetype ondersteuning ingebakken hebben, en moet je het plaatje met een los font dat je er zelf neerzet (*.ttf) de tekst laten printen, dan zijn ze tenminste identiek qua tekst.

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 20-09 18:51
Kippenijzer: in dit geval gaat dat al goed. In de plaatjes is te zien dat het font hetzelfde is, alleen het wordt niet goed gerenderd (door het verschillende gedrag van GD op verschillende platforms; een bug in GD naar mijn mening). Overigens kun je ook altijd gebruik maken van de GD standaard fonts (misschien gebeurt dat ook wel, dat weet ik niet zeker).

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb gewoon verdanna.ttf geupload en true type fonts staan ook op beide hostingen geactiveerd.
Daar zit het probleem niet.

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 20-09 18:51
Officieel kan dat niet he, zomaar dat soort fonts herdistribueren zonder toestemming.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Voor testen wel.
k pakte gewoon ff de eerste font die in me op kwam.

Acties:
  • 0 Henk 'm!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Soultaker schreef op 02 mei 2004 @ 23:11:
Officieel kan dat niet he, zomaar dat soort fonts herdistribueren zonder toestemming.
Het is toch ook geen herdistributie? Het is immers niet voor anderen te downloaden (neem ik aan).
Een licentie voor gebruik op een web server is iets anders.

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-09 08:50

gorgi_19

Kruimeltjes zijn weer op :9


Heren, zullen we het houden op het oorspronkelijke onderwerp? :) De legaliteit van herdistributie van fonts lijkt me een hele andere discussie, waarover evt. een nieuw topic in WG gestart mag worden. :)

[ Voor 7% gewijzigd door gorgi_19 op 02-05-2004 23:47 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1