Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Kuva näkyy vain merkkeinä

Sivun loppuun

porzi [17.08.2006 20:53:35]

#

Yritin siis muokata .png kuvaa, ja sitten piirtää sen näytölle. Lopputuloksena on kumminkin vain ihmeellisiä merkkejä. (ilmaisesti kuva tekstimuodossa.) Osaisiko joku kertoa, mikä mättää?

$kuva = imagecreatefrompng("tausta.png");

$vari=imagecolorallocate($kuva, 0,0,0);
imagestring ($kuva, 3, 10, 10, "Jippii äöå", $vari);

imagepng($kuva);
imagedestroy($kuva);

Edit: ja näin se tulostuu:

‰PNG


IHDRdd��€��MIDATxœíœÑrƒ �E7™þwì—§�´Æ**�V�¼ç¥�&âæpÁM;“‡
o�i<Ï. %$� YÉ�H�@²’�,€d�¾Î.
Ããï—¢+½ËrÒ4¼ÌÌ�ù³ä:|/Oœs|ÙôõÑÁb‚¦I–k�EŒ5L‹‰�æ'kª)@’u�Y�^öRS ÷ÌZ®Ø82��F/_�ܾûZ�pE×ìÌÈm�Öª�Þ�MËÁèå ãïùœŸ�+¶H�3½RMY«OÃd�;Ó$k
4ØöÎBT‘½dÑÓ±ð0ª�•%=
—�çr�¬u7�ƒÑËgƒ)%E«Ú¨3ü䦬¨)×QÐdV'OVƒgV1y¦ÌóiXØ
´Àí’•�+kµÏÊ¢DSàvÉ*á.²Êce7‘åbÊî ËËöÝA–#ËrŒ•õ-Ë×öu,ËÝöõ*ë�SÖ«¬ƒèíãÎA™
(Y€®d��+s߆Ër‡oß;€[»ã&k­Ö0^MÙ¡8ü
ž.é�â*ÄÊ
“•Wb»Yòê¬a:5ëI•å^Ó8aC�k¸)­Ÿñý�¾NM(_g��WiJ¯v�FÙIVå÷°¯Ó…®Ê:½²�r•mØ�’�ˆËÒ�Œ¢d�æM©2µ’�ø'K±Úæ#K¦vÑ6�H�àW–ö`
J�@²

tsuriga [17.08.2006 20:55:26]

#

header("image/png")

Blaze [17.08.2006 21:01:56]

#

header('Content-Type: image/png');

porzi [17.08.2006 21:14:44]

#

No nyt tulee, että kuvaa "http://...." ei voida näyttää, koska se sisältää virheitä. Mikäs tähän sitten auttaa?

Edit: Kiitos kuitenkin tähän astisesta avusta!

Edit2: Siis koodi on nyt tämän näköinen:

header ("content-type: image/png");

$kuva = imagecreatefrompng("tausta.png");

$vari=imagecolorallocate($kuva, 0,0,0);
imagestring ($kuva, 3, 10, 10, "Jippii äöå", $vari);

imagepng($kuva);
imagedestroy($kuva);

kayttaja-2791 [17.08.2006 21:19:37]

#

Koska palvelin ei kerro selaimelle että kyseessä on kuva, olettaa selain että se on tekstimuotoista dataa. Eli sinun pitää siis lähettää tieto käyttäjän selaimelle että tässä on kuva, ja vieläpä tarkemmin: kuva, joka on muotoa PNG. Se onnistuu http-headereilla. Sellaisen voit lähettää PHP:n funktiolla header (kuten tsuriga ja Blaze tuossa jo vähäsanaisesti neuvoikin, tosin tsurigan versio taitaa mielestäni olla epäkelpo?). Tämä pitää tehdä ennen tulostusta (ellei sitten puskurointi ole käytössä), eli sijoita se ennen imagepng funktiota.

porzi [17.08.2006 21:24:47]

#

No nyt se on näin:

$kuva = imagecreatefrompng("tausta.png");
$vari=imagecolorallocate($kuva, 0,0,0);
imagestring ($kuva, 3, 10, 10, "Jippii äöå", $vari);
header ("content-type: image/png");
imagepng($kuva);
imagedestroy($kuva);

eikä vieläkään toimi. :( Edelleen sanoo tuon saman kuvaa "http://www.porzi..." ei voida näyttää...

kayttaja-2791 [17.08.2006 21:26:12]

#

Pitääköhän sen content-typen olla kirjoitettu näin:
header ("Content-type: image/png");

Toimiiko tuo esimerkki:
https://www.php.net/manual/fi/function.imagecreatetruecolor.php

porzi [17.08.2006 21:40:54]

#

Sekään ei toimi. Se "sisältää virheitä". :( Onkos tämä serveristä kiinni? Arkku on käytössä.

Blaze [17.08.2006 21:44:48]

#

Mulla on sellanen hytinä, että noissa otsakkeiden nimissä ei oo väliä kirjainkoolla. Kuitenkin, speksissä on kirjoitettu, kuten mulla oli: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17

Ja tuo osahan siis toimii, jos selain kerran tunnistaa, että sieltä on kuva tulossa.

Edit:

porzi kirjoitti:

Sekään ei toimi. Se "sisältää virheitä".

Onhan sulla siinä PHP-tiedostossa tosiaan vain tuo esimerkkikoodi, eikä mitään muuta? Kuten HTML:ää, tai tyhjiä rivejä alussa/lopussa?

porzi kirjoitti:

Onkos tämä serveristä kiinni? Arkku on käytössä.

Jos palvelimelta puuttuis GD-tuki, PHP kertois siitä.

T.M. [17.08.2006 21:51:06]

#

Kuvan tulostuksen perusteella näyttää siltä että siellä koodin lopussa/alussa on välilyönti tai rivinvaihto, joka sitten rikkoo kuvan.

porzi [17.08.2006 22:04:17]

#

Se toimii! Olin vahingossa laittanut sinne alkuun ja loppuun <html><head></head><body> tagit. Kiitoksia paljon kaikille avusta.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta