Tämä PHP skripti ei toimi. Näyttää vain selaimessa tekstin:
"http://127.0.0.1:1101/kuva.php?url=pics\
<?php if (isset($_GET['url'])){ header("Content-type: image/png"); $kuva_tiedot = getimagesize($_GET['url']); $width = $kuva_tiedot[0]; $height = $kuva_tiedot[1]; $kuva=imagecreate($width,$height); $tausta=imagecolorallocate($kuva, 255, 255, 255); $teksti=imagecolorallocate($kuva,138,210,11); imagestring($kuva,2,10,10,"Copyright Basic 6.0 ".date("Y"),$teksti); ImagePNG($kuva,$_GET['url']); imagedestroy($kuva); } ?>
Olen aloittelija GDn kanssa.
Sen pitäisi ladata kuva jonka polun $_GET hakee, ja GDllä lisätä siihen teksti "Copyright Basic 6.0 " + nykyinen vuosi.
Lähetä tuo kuva-otsake vasta juuri ennen kuvan luomista ja tarkasta sitä ennen että puskuri on tyhjä, niin saat PHP:n virheilmot näkyviin:
<?php ob_start(); if (isset($_GET['url'])){ $kuva_tiedot = getimagesize($_GET['url']); $width = $kuva_tiedot[0]; $height = $kuva_tiedot[1]; $kuva=imagecreate($width,$height); $tausta=imagecolorallocate($kuva, 255, 255, 255); $teksti=imagecolorallocate($kuva,138,210,11); imagestring($kuva,2,10,10,"Copyright Basic 6.0 ".date("Y"),$teksti); if(ob_get_length() == 0){ header("Content-type: image/png"); ImagePNG($kuva,$_GET['url']); imagedestroy($kuva); } } ob_end_flush(); ?>
Testaamatonta hatusta vedettyä koodia, mutta toivottavasti pääset tuosta eteenpäin.
Nyt se antaa virheilmoitusta:
Warning: getimagesize("pics\gamedevice.png") [function.getimagesize]: failed to open stream: Invalid argument in D:\Program Files\Abyss Web Server\htdocs\kuva.php on line 5
Warning: imagecreate() [function.imagecreate]: Invalid image dimensions in D:\Program Files\Abyss Web Server\htdocs\kuva.php on line 9
Warning: imagecolorallocate(): supplied argument is not a valid Image resource in D:\Program Files\Abyss Web Server\htdocs\kuva.php on line 10
Warning: imagecolorallocate(): supplied argument is not a valid Image resource in D:\Program Files\Abyss Web Server\htdocs\kuva.php on line 11
Warning: imagestring(): supplied argument is not a valid Image resource in D:\Program Files\Abyss Web Server\htdocs\kuva.php on line 12
Ymmärrän että imagesize ei saa haettua kuvaa tai jotain.
Veikkaisin, että kuvaa ei löydy. Windowsissa tuskin kyse on oikeuksista. Tarkasta, että polku kuvaan todella on
D:\Program Files\Abyss Web Server\htdocs\pics\gamedevice.png
.
Ja koita antaa parametrinä myös pics/gamedevice.png
. Siitä on aikaa kun viimeksi windowsissa noilla kikkaillu, mutta muistaakseni noita kenoja ja takakenoja sai käyttää ainakin jossain tapauksessa täysin epäloogisesti...
Olinkin vahingossa laittanut " merkit parametrin eteen ja taakse.
Kun poistin ne, sivulla lukee:
http://127.0.0.1:1101/kuva.php?url=pics/
Jos haluat että muut näkee tuon sun virheilmoituksen, tarvitaan sun julkinen ip-osoite. Ei valitettavasti onnistu tuon sun oman loopbackin kautta :)
127.0.0.1 viittaa siis juuri omaan koneeseen (nk. loopback). Jotta sinun koneeseesi saataisiin yhteys muualta verkosta, tarvitaan koneesi julkinen, Internettiin näkyvä IP-osoite.
Julkisen ip-osoitteesi saat selville esim. kirjoittamalla komentoriville ipconfig tai vierailemalla osoitteessa http://www.whatismyip.com/
Eiku sivulla lukee juuri tuo teksti:
TÄMÄ-->http://127.0.0.1:1101/kuva.php?url=pics/
Ohjelmointiputka vaan laittaa tuon linkiksi
Aihe on jo aika vanha, joten et voi enää vastata siihen.