[PHP, GDlib, Freetype] Image output garbled

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Topicstarter
Hoi allemaal,

Ik zit hier met een scriptje dat tekst op een plaatje rendert en dan output.
Nu roep ik deze een aantal maal achter elkaar aan om een plaatje weer te geven (in dit geval een setje buttons waar tekst op moet komen).
Wat nu het probleem is, is dat de output soms geflipt is... alsof de data corrupt is geraakt.
Meestal is het met een paar refreshes weer weg, en worden alle plaatjes goed weer gegeven.

serverspecs:
Intel Pentium 166Mhz
80MB EDO RAM
Win2K Pro
Apache 1.3.33
PHP4.4.0
bundeled GDlib 2.0.28
Freetype 2.0
MySQL 4.0.25
Zend Optimizer

en de code die ik gebruik:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$imgfile = "./img/btn_blank.gif";
$font = './Hyperspd.ttf';

$im = imagecreatefromgif($imgfile); 

$_GET['text'] = urldecode($_GET['text']);
$_GET['text'] = substr ($_GET['text'], 0, 30);

$fontsize = 13;
$black = imagecolorallocate($im, 0, 0, 0);
$offset = 110 - ((strlen($_GET['text']) * 11) / 2);

imagettftext($im, $fontsize, 0, $offset, $fontsize+10, $black, $font, $_GET['text']);

header("Content-type: image/gif");
imageGIF($im);
imagedestroy($im);
?>


Ligt het aan mijn server? te traag bijv? of misschien brak RAM oid?
of doe ik iets verkeerd in de code?

edit:

owjah dit is geen productieserver ofzo hoor :P gewoon een bakje wat ik over had en waar ik dingetjes op test en ontwerp ;)

[ Voor 30% gewijzigd door McKaamos op 08-12-2005 03:49 ]

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

  • Arto
  • Registratie: November 2005
  • Laatst online: 20-09 21:40
werkt het wel goed als je het stnadaart font gebruikt?
een 166mhz servertje met win2000 is niet al te snel aangezien minimaal 133mhz en 64mb ram is
maar dat zou nomaalgesproken een timeout of langere loadtijd geven.

Acties:
  • 0 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Topicstarter
artorozenga schreef op woensdag 07 december 2005 @ 09:30:
werkt het wel goed als je het stnadaart font gebruikt?
een 166mhz servertje met win2000 is niet al te snel aangezien minimaal 133mhz en 64mb ram is
maar dat zou nomaalgesproken een timeout of langere loadtijd geven.
hmm goed idee... maaruh, er is niet zoiets als een standaardfont... het script gebruikt sowieso een TTF file als font... of bedoel je een standaard windows font zoals Arial?

en lange laadtijd: sja het duurt wat langer als anders, maar is toch ruim sneller dan als je een website laad op een 56K verbinding... vele malen sneller eigenlijk...
timeouts heb ik nooit voor zover ik weet... of duurt het renderen misschien te lang, en dattie daarom bagger output? het kost hooguit 3 a 4 seconden...

edit:
trouwens, soms is het plaatje maar voor de onderste helft bagger...
de tekst zie je dan wel staan op het normale gedeelte... dus denk eigenlijk niet dat het aan et font zal liggen, maar desalniettemin probeer ik het wel ff.

nog een edit: trouwens je zal ervan versteld staan hoe snel Win2K is op zo'n machine... try it ;)


edit3:

OK getest, en een ander font heeft geen effect.

[ Voor 21% gewijzigd door McKaamos op 07-12-2005 10:06 ]

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Het probleem lijkt een beetje op deze:
[rml][ PHP]Plaatjes worden corrupt doorgegeven *[/rml]
Misschien dat de oplossing van de gebruiker voor jou ook werkt?

Acties:
  • 0 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Topicstarter
bigbeng schreef op woensdag 07 december 2005 @ 10:52:
Het probleem lijkt een beetje op deze:
[rml][ PHP]Plaatjes worden corrupt doorgegeven *[/rml]
Misschien dat de oplossing van de gebruiker voor jou ook werkt?
ik lees onderaan dattie zijn outputbuffer op on heeft gezet ipv 4096...
wat zou het voor effect hebben als ik in het script ob_start() en ob_flush() gebruik?
oftewel: eerst bufferen tot het klaar is, en dan pas outputten.

edit: ok dat werkt helaas niet..
output addslashen ook geen effect...

[ Voor 7% gewijzigd door McKaamos op 07-12-2005 11:07 ]

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Topicstarter
om nog maar ff het topic in stand te houden:

ik heb dus alle ini vars die in dat ene topic stonden geprobeerd... geen effect.
een vriend van me heeft het script getest op webspace van Yourhosting.nl en daar werkt het goed.
Ik gok dus dat het ergens aan mijn server ligt...
misschien wel niet genoeg CPU power, of een issue met te weinig geheugen ofzo... al zou 80MB toch voldoende moeten zijn....

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

En hoeveel van die 80MB mag PHP gebruiken? ;)

Verder heb ik ooit een keer een FAQ geschreven over het werken met GD. Loop deze tips bijvoorbeeld eens na: P&W FAQ - Image Manipulation in PHP
Daarnaast: zet error_reporting op E_ALL en laat die vieze @ operator op regel 5 eens weg. Fouten onderdrukken is sowieso al geen manier om je problemen op te lossen, en tijdens het debuggen al helemaal niet. ;)

offtopic:
Waarom gebruik je imagecreatefromgif("$imgfile") in plaats van imagecreatefromgif($imgfile)? Die quotes voegen niets toe. Bovendien staat het nogal rommelig dat je schijnbaar willekeurig enkele en dubbele quotes door elkaar gebruikt; dat nodigt al snel uit tot het maken van fouten.

'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!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Topicstarter
-NMe- schreef op donderdag 08 december 2005 @ 03:31:
En hoeveel van die 80MB mag PHP gebruiken? ;)

Verder heb ik ooit een keer een FAQ geschreven over het werken met GD. Loop deze tips bijvoorbeeld eens na: P&W FAQ - Image Manipulation in PHP
Daarnaast: zet error_reporting op E_ALL en laat die vieze @ operator op regel 5 eens weg. Fouten onderdrukken is sowieso al geen manier om je problemen op te lossen, en tijdens het debuggen al helemaal niet. ;)

offtopic:
Waarom gebruik je imagecreatefromgif("$imgfile") in plaats van imagecreatefromgif($imgfile)? Die quotes voegen niets toe. Bovendien staat het nogal rommelig dat je schijnbaar willekeurig enkele en dubbele quotes door elkaar gebruikt; dat nodigt al snel uit tot het maken van fouten.
heb die vieze dingen ff uit mijn code gehaald ;)
heeft verder geen effect oid

in php.ini staat:
max_execution_time = 30
max_input_time = 60
memory_limit = 8M

8M moet toch voldoende zijn?
tis maar een plaatje van 217x35px in GIF format, deels transparant.
en text rasteren mag ook nie zoveel kosten toch?
daarnaast gaat het de ene keer wel fout en de andere keer niet...

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Heb je error_reporting op E_ALL gezet en de content-type header even weggelaten?

'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!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Topicstarter
-NMe- schreef op donderdag 08 december 2005 @ 13:37:
Heb je error_reporting op E_ALL gezet en de content-type header even weggelaten?
gedaan.
nogsteeds garbled plaatjes zo af en toe.

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Zonder content-type header kùn je niet eens een plaatje krijgen? :?

'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!

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05
McKaamos schreef op donderdag 08 december 2005 @ 15:37:
[...]


gedaan.
nogsteeds garbled plaatjes zo af en toe.
Heb je daarna ook apache gerestart en gecontroleerd of er warnings in je apache error log zijn toegevoegd?

edit:

Indien er een warning of error uitgespuugd wordt dan zal de header call een error "Headers already sent" geven en die warning wordt onderdeel van je image data. Dat leidt in het algemeen tot verminkte plaatjes.

[ Voor 29% gewijzigd door stekkel op 08-12-2005 16:00 ]


Acties:
  • 0 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Topicstarter
stekkel schreef op donderdag 08 december 2005 @ 15:56:
[...]


Heb je daarna ook apache gerestart en gecontroleerd of er warnings in je apache error log zijn toegevoegd?
deed het gewoon vanuit het script zelf, dmv ini_set();
http://nl3.php.net/manual/nl/function.ini-set.php

edit: in de errorlog staat niks vreemds iig... same as always...
wat regels over het niet kunnen vinden van een favicon.

[ Voor 16% gewijzigd door McKaamos op 08-12-2005 20:40 ]

Iemand een Tina2 in de aanbieding?

Pagina: 1