[PHP] PNG maken geeft gekke output

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi. Ik probeer met PHP een PNG te maken en met onderstaande code lukt dat ook. Als ik de code opsla als filenaam.php en run krijg ik een fijne rode rechthoek

PHP:
1
2
3
4
5
6
7
<?
Header("Content-Type: image/png");
$im = ImageCreate(500, 75);
$red = ImageColorAllocate($im, 255, 0, 0);
ImageFill($im, 100, 100, $red);
ImagePNG($im);
?>


Echter, ik wil deze code niet los, maar geïntegreerd in een groter geheel gebruiken, maar als ik de code in mijn statistieken_opvraag_pagina plaats, krijg ik vreemde output.
Dit heeft er denk ik mee te maken dat de browser niet doorheeft dat-ie een PNG krijgt ipv plain text. Wat doe ik fout? Ik heb geprobeerd de header boven de eerste HTML tags te zetten en ik heb geprobeerd de pagina PHP only (zonder HTML dus) te maken, maar ik blijf die gekke output krijgen, terwijl bewezen is dat het stukkie code hierboven iig werkt.

Onderaan deze pagina staat de output.


Wat zie ik over het hoofd?

Ik probeer dit met GD 1.6 of hoger met alle opties enabled.

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

MOet je die foute image maar eens opslaan en openen met een hexeditor :D
edit:
ik zit in mozilla; ik zie nu dat hij in IE wel een pagina laat zien


En maak je geen denkfoutjes? Wil je de image opnemen in de pagina zul je daarvoor een nieuwe aanroep naar de server moeten doen in de vorm van een andere PHP file; of index.php?geefMijDeImage=true afvangen oid :)

[ Voor 73% gewijzigd door Spider.007 op 10-03-2003 00:15 ]

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

uit de source van je pagina:
</table>0: ‰PNG
Je maakt idd een denkfout. De content-type van een complete pagina is of HTML, of png, niet allebei tegelijk ;)

Wat er nu gebeurt is opzich logisch: Mozilla denkt een Ping te ontvangen, maar krijgt allemaal HTML, wat voor een ping bestand dus plain rubbish is. Vervolgens zegt mozilla: zorry, maar dat kan ik niet laten zien.

Wat IE doet: Die krijgt een ping-content-type header, maar krijgt toch een <html> tag te zien. He!, denk IE, toch html? Ook goed :) en laat 't vervolgens als html zien....

Hier had je volgens mij wel uit kunnen komen als je gewoon even de source van je output had bekeken :?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Aha. Dat verklaart een hoop en inderdaad, ik had er zelf uit kunnen komen. Jammer, want ik zit al 2 dagen te klooien hiermee! Nou ja, ik weet het in ieder geval. Thanks a bunch! :)

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 03:13
drm schreef op 10 March 2003 @ 00:22:
Je maakt idd een denkfout. De content-type van een complete pagina is of HTML, of png, niet allebei tegelijk ;)
Nee hoor, je kunt prima objecten (zoals scripts maar ook plaatjes) inlinen. Dat moet je dan natuurlijk wel op de juiste manier doen.

Acties:
  • 0 Henk 'm!

Verwijderd

gewoon een losse php file maken voor de stats, en die openen via <img src> zoals eerder ook al gezecht.
Soultaker schreef op 10 March 2003 @ 01:12:
[...]

Nee hoor, je kunt prima objecten (zoals scripts maar ook plaatjes) inlinen. Dat moet je dan natuurlijk wel op de juiste manier doen.
Ja, maar als je het fout doet dan werkt het niet echt ;)

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Daar heb je gelijk in, maar ik had zo'n vermoeden dat de topicstarter daar niet naar op zoek was :)

en eigenlijk heb ik er niet eens aan gedacht, gezien het niet erg gebruikelijk is O-) ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • Tom-Eric
  • Registratie: Oktober 2001
  • Laatst online: 25-03 09:11
Je kan natuurlijk de image base64 encoden en als binaire data includen in je html. Meer daarover kan je hier lezen. Een voorbeeld is:
code:
1
2
3
4
5
6
7
8
9
   <IMG
   SRC="data:image/gif;base64,R0lGODdhMAAwAPAAAAAAAP///ywAAAAAMAAw
   AAAC8IyPqcvt3wCcDkiLc7C0qwyGHhSWpjQu5yqmCYsapyuvUUlvONmOZtfzgFz
   ByTB10QgxOR0TqBQejhRNzOfkVJ+5YiUqrXF5Y5lKh/DeuNcP5yLWGsEbtLiOSp
   a/TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQZXZeYGejmJl
   ZeGl9i2icVqaNVailT6F5iJ90m6mvuTS4OK05M0vDk0Q4XUtwvKOzrcd3iq9uis
   F81M1OIcR7lEewwcLp7tuNNkM3uNna3F2JQFo97Vriy/Xl4/f1cf5VWzXyym7PH
   hhx4dbgYKAAA7"
   ALT="Larry">

Als je dan zoiets als hieronder doet:
PHP:
1
2
3
4
<?php
$base64 = chunk_split(base64_encode($im));
print("[img]\"data:image/png;base64,"[/img]");
?>

[ Voor 7% gewijzigd door Tom-Eric op 10-03-2003 07:43 . Reden: moet png zijn, niet gif ]

i76 | Webdesignersgids | Online Gitaarlessen & Muziekwinkels


Acties:
  • 0 Henk 'm!

  • Tom-Eric
  • Registratie: Oktober 2001
  • Laatst online: 25-03 09:11
Mijn excuses, bovenstaande code werkt niet, onderstaande werkt echter wel.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php

$im = ImageCreate(500, 75);
$red = ImageColorAllocate($im, 255, 0, 0);

ImageFill($im, 100, 100, $red);

ob_start();
ImagePNG($im);
$png = ob_get_contents();
ob_end_clean();


$base64 = chunk_split(base64_encode($png));
print("[img]\"data:image/png;base64,"[/img]");
?>

Het is misschien een rare methode, maar je kan op deze methode wel goed plaatjes embedden zonder daarvoor extern scripts voor aan te roepen.

i76 | Webdesignersgids | Online Gitaarlessen & Muziekwinkels


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

offtopic:
Tum|mut, verzoeke voortaan de Afbeeldingslocatie: http://gathering.tweakers.net/global/templates/got/images/icons/edit.gif te gebruiken om je posts aan te passen, daar istie voor ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1