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�@²
header("image/png")
header('Content-Type: image/png');
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);
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.
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ää...
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.
Sekään ei toimi. Se "sisältää virheitä". :( Onkos tämä serveristä kiinni? Arkku on käytössä.
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ä.
Kuvan tulostuksen perusteella näyttää siltä että siellä koodin lopussa/alussa on välilyönti tai rivinvaihto, joka sitten rikkoo kuvan.
Se toimii! Olin vahingossa laittanut sinne alkuun ja loppuun <html><head></head><body> tagit. Kiitoksia paljon kaikille avusta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.