elikkä suunnittelen systeemiä jolla lähetetään sivuille kuva johon php lisää teksin ja sen jälkeen tallentaa sen. Ongelma on että en osaa muokata postilla lähetettyä kuvaa.
elikkä tälläinen html sivu lähettää kuvan:
......
ja tämä php koodi tallentaa kuvan:
move_uploaded_file($_FILES["file"]["tmp_name"], $polku.$_FILES["file"]["name"]);
Ja ennen tallenusta kuvaan pitäisi lisätä teksti. Tekstin lisäämisen periaatteessa osaan mutta en tiedä miten se tehdään uploadatulle kuvalle.
yritin ratkaista ongelman jotenkin näin:
$kuvatiedosto = readfile($_FILES['tmp_file']['name']);
//tämän siis pitäisi kopioida kuva muuttujaan (varmaan aivan väärin)
imagestring($kuvatiedosto,$fontti,($x - imagefontwidth($fontti)*strlen($teksti))/2,($y-imagefontheight ($fontti))/2,$teksti,$musta);
//tämä lisää tekstin keskelle kuvaa
//...lopuksi erillinen koodi tallentaa kuvan
elikkä tälläinen html sivu lähettää kuvan:
......
ja tämä php koodi tallentaa kuvan:
move_uploaded_file($_FILES["file"]["tmp_name"], $polku.$_FILES["file"]["name"]);
Ja ennen tallenusta kuvaan pitäisi lisätä teksti. Tekstin lisäämisen periaatteessa osaan mutta en tiedä miten se tehdään uploadatulle kuvalle.
yritin ratkaista ongelman jotenkin näin:
$kuvatiedosto = readfile($_FILES['tmp_file']['name']);
//tämän siis pitäisi kopioida kuva muuttujaan (varmaan aivan väärin)
imagestring($kuvatiedosto,$fontti,($x - imagefontwidth($fontti)*strlen($teksti))/2,($y-imagefontheight ($fontti))/2,$teksti,$musta);
//tämä lisää tekstin keskelle kuvaa
//...lopuksi erillinen koodi tallentaa kuvan
Vastaukset 4
Vanhimmat
Käytä readfile():n sijasta esimerkiksi imagecreatefromjpeg()-funktiota, joka luo tiedoston pohjalta imagestring():lle kelpaavan kuvan.
Vastaavasti tallennus pitää tehdä imagejpeg()-funktiolla.
$image = imagecreatefromjpeg('kuva.jpg');
// Tässä välissä käsittele kuvaa
imagejpeg($image, 'uusi_kuva.jpg');
yritin siirtää kuvan muuttujaan seuraavasti:
$kuvatiedosto = imagecreatefromjpeg($_FILES["file"]["tmp_name"]);
,mutta sivut herjaa jostain ongelmasta:
Warning: imagecreatefromjpeg(): open_basedir restriction in effect. File(/tmp/phpf8nUzb) is not within the allowed path(s): (.:/mbnetjail:/tmp) in kuva2.php on line 138
Warning: imagecreatefromjpeg(/tmp/phpf8nUzb): failed to open stream: Operation not permitted in kuva2.php on line 138
.jpg.
Eikö tuo koodi ole nyt ilmeisesti oikein? Pitääkö jotain chmodata vai onko mbnetissä säädöt niin tiukalla että tuo ei yksinkertaisesti toimi?
Et voi käyttää sitä kuvaa sen ollessa /tmp-hakemistossa, vaan se pitää siirtää johonkin omaan hakemistoosi move_uploaded_file() -funktiolla.
Aiemmassa koodissasi oli tämä pätkä, jonka ilmeisesti poistit?
move_uploaded_file($_FILES["file"]["tmp_name"], $polku.$_FILES["file"]["name"]);
Jonka jälkeen pitäisi tulla esim:
$kuvatiedosto = imagecreatefromjpeg($polku.$_FILES["file"]["name"]);
Nyt toimii. Kiitoksia vinkeistä.