gd + post + imagestring

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
4220
Äänestä

Muut lukivat myös

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');

Äänestä
  • 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?

    Äänestä

  • php,html,java,qbasic,visual... kirjoitti:

    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"]);

    Äänestä

  • Undefined kirjoitti:

    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ä.

    Äänestä

Kommentoi aloitusta


php,html,java,qbasic,visual... kirjoitti:

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

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu