Moro!
Yritän tehdä php:llä softaa, joka kääntäis kuvan. Mulla on alla olevan koodin mukainen koodi, joka toimii kyllä muutoin, mutta se ei tallenna kuvaa. Jos ottaa imagejpeg-funktiosta jälkimmäisen parametrin pois, ja kommentoi uudelleenohjauksen, niin se kyllä tulostaa tuon käännetyn kuvan. Mikähän mahtaa olla vikana?
<?php $fileName = $_POST["file"]; $degrees = $_POST["degrees"]; header('Content-type: image/jpeg'); $source = imagecreatefromjpeg($fileName); $rotate = imagerotate($source, $degrees, 0); imagejpeg($rotate,$fileName); imagedestroy($source); imagedestroy($rotate); header("Location: images.php"); ?>
Tiedosto-oikeudet ei taida riittää, ryhmä tarvitsee kirjoitusoikeuden kansioon. Lisäksi rivillä 12 on ylimääräisiä merkkejä.
Et tarvitse tuota headeria jos vain käsittelet kuvaa etkä näytä sitä, mutta vissiin se testaamista varten siellä onkin.
Okei, kokeilempa oikeuksien muuttamista. Joo, näköjään jäi kommentin toinen puolisko jäljelle..
Lisäys: Eipä ollu vaikutusta oikeuksien muutolla. Kokeilin 766 ja 777, muttei toiminut. is_writable()-funktio kyllä palauttaa true.
Jahas, näyttää siltä, että ongelma oliskin selaimen(firefoxin) välimuistissa, kun kääntää kuvan, ei tapahdu mitään, vaikka kuinka päivittelis sivua, mutta kun poistaa selaimen historia tiedot, ja välimusitin, niin muutos näkyy.
Kiersimpä tuon välimuisti ongelman laittamalla kuvan perään '?' merkin jälkeen timestampin: img.jpg?timestamp.
Oisko paremipia ideoita?
Sun täytynee opetella painamaan enterin sijaan F5:tä.
Kannattaisi ehkä tallentaa pyöritetty kuva eri tiedostoon kuin alkuperäinen. Silloin kuvaa voisi kääntää uudestaan ilman, että laatu heikkenee joka käännöllä, ja alkuperäinenkin kuva säilyisi.
Jos palvelimella on imagemagick asennettuna (yleensä esim. webhotellin tarjoajilla on), niin suosittelen käyttämään sitä kuvan käsittelyihin. Se tekee parempaa jälkeä, käyttää vähemmän resursseja ja PHP:n muistinhallinta ei ole rajoittavatekijä isoissakaan kuvissa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.