Olen tässä vääntänyt pientä kuvauploaderia, jonka pitäisi nimetä kuva uudelleen ja muuttaa sen koko, koodin on siis tarkoitus ladata käyttäjälle oletuskuva ja nimetä se uudelleen käyttäjännimimerkki.gif
Ongelma: Koodi toimii muuten, mutta se ei muuta kuvan kokoa
<?php session_start(); $tunnus = $_POST['nimmari']; // Kuva nimetään tämän mukaan $leveys = 240; // uuden kuvan leveys $korkeus = 320; // uuden kuvan korkeus $temp = "kayttajat/temp/"; //väliaikainen kansio $hakemisto = "kayttajat/"; //"pysyvä" kansio if(is_uploaded_file($_FILES['kuva']['tmp_name'])) { if($_FILES['kuva']['type'] == "image/gif"){ $nimi = $_FILES['kuva']['name']; $nimi = $tunnus.".gif"; move_uploaded_file($_FILES['kuva']['tmp_name'], $temp . $nimi); list($leveys_orig, $korkeus_orig) = getimagesize($temp . $nimi); $suhde_orig = $leveys_orig/$korkeus_orig; if ($leveys/$korkeus > $suhde_orig) { $leveys = $korkeus*$suhde_orig; } else { $korkeus = $leveys/$suhde_orig; } $image_p = imagecreatetruecolor($leveys, $korkeus); $image = imagecreatefromgif($temp.$nimi); imagecopyresampled($image_p, $image, null, null, null, null, $leveys, $korkeus, $leveys_orig, $korkeus_orig); copy($temp.$nimi, $hakemisto.$nimi); unlink($temp.$nimi); header("location: ../index.php?sivu=profiili"); } else { print "Väärä tiedostotyyppi, tiedoston tulee olla .gif-muotoa"; print "<p /><a href=\"../index.php?sivu=profiili\">profiiliin</a>"; } } else { print "Tiedoston lataus epäonnistui"; print "<p /><a href=\"../index.php?sivu=profiili\">Palaa profiiliin</a>"; } ?>
Tietysti jos joku tietää paremman ratkaisun niin senkin saa esittää, kiitos jo etukäteen. :)
https://www.php.net/imagecreatetruecolor:
Note: This function will not work with GIF file formats.
Sorrowind kirjoitti:
Olen tässä vääntänyt pientä kuvauploaderia, jonka pitäisi nimetä kuva uudelleen ja muuttaa sen koko, koodin on siis tarkoitus ladata käyttäjälle oletuskuva ja nimetä se uudelleen käyttäjännimimerkki.gif
En kuvien kanssa ole leikkinyt, mutta sellainen pikku huomautus, että jos kuvaa vaihdellaan, niin tuo käyttäjänimi.gif ei ole hyvä ratkaisu. Selaimet ei sitä ihan helpolla usko uudeksi, vaan näyttää sen cachesta.
if($_FILES['kuva']['type'] == "image/gif")
->
if($_FILES['kuva']['type'] == "image/jpeg")
En saa tuota tuolla muutoksella toimimaan syystä x, ei jpg kuvat mene läpi
Pitää tuota nimeämiskäytäntöä muuttaa, siinä tosiaan on ongelma, että lataa cachesta sen kuvan, näyttää ettei se kuva olis vaihtunut, mutta kun päivittää sivun niin se vaihtuu.
Laita sinne
var_dump( $_FILES[ 'kuva' ][ 'type' ] );
kokeile upata jpeggi ja kato mitä se sanoo tyypiksi. Ja error_reporting( E_ALL | E_STRICT );
Perusdebuggia.
"image/jpg" -> "image/pjpeg" Korjas ongelman, vielä pitäis saada tuo kuvan koon muuttaminen toimimaan
<?php $tunnus = $_POST['nimmari']; $leveys = 240; $korkeus = 320; $temp = "kayttajat/temp/"; $hakemisto = "kayttajat/"; if(is_uploaded_file($_FILES['kuva']['tmp_name'])) { if($_FILES['kuva']['type'] == "image/pjpeg"){ $nimi = $_FILES['kuva']['name']; $nimi = $tunnus.".jpg"; move_uploaded_file($_FILES['kuva']['tmp_name'], $temp . $nimi); list($leveys_orig, $korkeus_orig) = getimagesize($temp . $nimi); $suhde_orig = $leveys_orig/$korkeus_orig; if($leveys/$korkeus > $suhde_orig) $leveys = $korkeus*$suhde_orig; else $korkeus = $leveys/$suhde_orig; $image_p = imagecreatetruecolor($leveys, $korkeus); $image = imagecreatefromjpeg($temp.$nimi); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $leveys, $korkeus, $leveys_orig, $korkeus_orig); copy($temp.$nimi, $hakemisto.$nimi); unlink($temp.$nimi); header("location: ../index.php?sivu=profiili"); } else { print "Väärä tiedostotyyppi, tiedoston tulee olla .gif-muotoa"; print "<p /><a href=\"../index.php?sivu=profiili\">profiiliin</a>"; } } else { print "Tiedoston lataus epäonnistui"; print "<p /><a href=\"../index.php?sivu=profiili\">Palaa profiiliin</a>"; } ?>
Tältä se näyttää nyt
Pjpeg taitaa tarkoittaa progressive jpeggiä (joskin jos tuota pjpeggiä ehtii hakukoneista niin ensimmäiset vastaukset ehdottelee, että olis IE:n "ominaisuus" kutsua kaikki jpegejä noiksi). Ehkä olis varmin testata jpeg OR pjpeg
(testaile progressive- ja "normi"jpegeillä, sekä useilla selaimilla [ja raportoi toki tänne jos löytyy jotain mielenkiintoista havainnoista]).
Jos kuvia lataa jpg-muodossa niin täytyy käyttää pjpeg:iä, muilla toimii tuolla jpeg:llä niin kun pitääkin. Laitoin tuon tuolla ehto-lauseella niin menee kaikilla läpi
<?php if($_FILES['kuva']['type'] == "image/jpeg" || $_FILES['kuva']['type'] == "image/pjpeg") ?>
En ole kuvien kanssa ennen leikkinyt, eli purkkapatentteja on tiedossa, ja tottakai kritiikki ja ohjeet ovat tässä tervetulleita.
Tuohon kuvan koon muuttamiseen kaipaisin vinkkiä, kun ei tuolla tavoin toimi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.