[PHP] GD -> ImagePNG() output naar file werkt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • unitzero
  • Registratie: Oktober 2001
  • Laatst online: 11-07 07:31
Omdat ik problemen heb met het cachen van dynamisch gegenereerde plaatjes op een site (hij laad ze telkens opnieuw en vergeet er soms een paar, komt waarschijnlijk omdat de server het niet al te prettig vind) had ik bedacht dat ik de plaatjes maar als zodanig moest opslaan in een directory, dat ze indien de plaatjes bestaan niet opnieuw gegenereerd hoeven te worden. Als ik nu ImagePNG() gebruik dan wordt het zojuist gecreerde bestand slechts 0 byte groot...

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$imagename = "images/".$tekst.".png";
if ( !file_exists($imagename) ) {
header("Content-type: image/png");
$plaatje = ImageCreate(150, 12);
$rood = ImageColorAllocate($plaatje, 187, 0, 0); 
$wit     = ImageColorAllocate($plaatje, 255, 255, 255); 
ImageRectangle($plaatje, 0, 0, 100, 75, $rood); 
ImageTTFText($plaatje, 14, 0, 0, 11, $wit, realpath("addcityboy.ttf"), $tekst);
ImagePNG($plaatje, $imagename); 
ImageDestroy($plaatje);
include($imagename);
}
else {
include($imagename);
}


het gaat om regel 9 waar het fout gaat: ImagePNG($plaatje, $imagename);

ligt dit aan de server of aan mijn script? is de oplossing die ik voor het originele probleem bedenk wel de goed? kan namelijk niet goed analyseren waarom ie de plaatjes af en toe wel en af en toe niet inlaad behalve dat GD-lib de server constant op zijn donder geeft en daardoor af en toe even wat vergeet...

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

En wat zit er in $imagenaam? Dat is wel een lokaal pad toch?

[edit]
nm.. staat bovenaan :P

[ Voor 23% gewijzigd door Bosmonster op 18-02-2004 14:36 ]


Acties:
  • 0 Henk 'm!

  • unitzero
  • Registratie: Oktober 2001
  • Laatst online: 11-07 07:31
Bosmonster schreef op 18 februari 2004 @ 14:35:
En wat zit er in $imagenaam? Dat is wel een lokaal pad toch?

[edit]
nm.. staat bovenaan :P
check, en dat pad bestaat, en het bestand wordt ook aangemaakt, maar wordt 0 byte groot...

Acties:
  • 0 Henk 'm!

  • unitzero
  • Registratie: Oktober 2001
  • Laatst online: 11-07 07:31
hee, hoe suf: hij doet het wel op een andere server... ik ga even de GD-lib instellingen checken

edit: meer gegevens:

server 1: de server waarop het wel werkt:
windows XP met apache 1.3.29, php 4.3.4, gd-lib: bundled (2.0.15 compatible)

server 2: de server waar het niet op werkt:
FreeBSD 4.9-PRERELEASE #2: Sat i386 met apache 2.0, php 4.3.4, gd-lib: 2.0 or higher

de gd-instellingen zijn exact het zelfde op beide machines

iemand enig idee?

[ Voor 66% gewijzigd door unitzero op 18-02-2004 15:20 ]


Verwijderd

kijk op beide servers eens naar de output van phpinfo().
Staat bij beide bij GD de PNG op enabled? Kloppen in de configuration in het begin van de output de --with-png en --with-png-dir?
Is de PNG library bij de tweede server correct?

  • unitzero
  • Registratie: Oktober 2001
  • Laatst online: 11-07 07:31
Verwijderd schreef op 19 februari 2004 @ 13:00:
1) Staat bij beide bij GD de PNG op enabled?
2) Kloppen in de configuration in het begin van de output de --with-png en --with-png-dir?
3) Is de PNG library bij de tweede server correct?
1) Ja
2) Die config commands zijn beide niet aanwezig bij de 2e server (bij de eerste ook niet maar dat wijt ik aan het feit dat dat een Windows XP server is. Mara zou het daar aan kunnen liggen? Weet daar niet al te veel vanaf...
3) Weet ik niet, het enige wat ik van de GD-library in totaal weet is wat ik in de post hierboven gepost heb... De PNG-Lib krijgt het wel voorelkaar naar scherm te outputten...

Add.: even vergeten te vermelden, de ImageJPEG() en ImageGIF() functies geven exact hetzelfde probleem: wel output naar scherm, niet goed naar schijf...

[ Voor 10% gewijzigd door unitzero op 19-02-2004 14:06 ]


Acties:
  • 0 Henk 'm!

  • unitzero
  • Registratie: Oktober 2001
  • Laatst online: 11-07 07:31
iemand een idee?

Acties:
  • 0 Henk 'm!

  • Sjeik
  • Registratie: Augustus 2001
  • Laatst online: 29-05 14:39
Waarom doe je: header("Content-type: image/png");

Volgens mij moet dat niet. Maar dat kan natuurlijk aan mij liggen.

Was ik maar rijk en niet zo knap...


Acties:
  • 0 Henk 'm!

  • KillR-B
  • Registratie: Mei 2002
  • Laatst online: 19-09 11:55
Probeer die ImageDestroy($plaatje); eens weg te halen...

Acties:
  • 0 Henk 'm!

  • unitzero
  • Registratie: Oktober 2001
  • Laatst online: 11-07 07:31
KillR-B schreef op 22 februari 2004 @ 15:23:
Probeer die ImageDestroy($plaatje); eens weg te halen...
dan loopt het geheugen van je server toch vol? die imagedestroy is volgens mij bedoeld om het plaatje uit het geheugen te halen...
Pagina: 1