Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Kuvauploaderin kanssa ongelma

Sivun loppuun

Sorrowind [22.12.2007 17:22:00]

#

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. :)

Hakoulinen [22.12.2007 21:52:42]

#

https://www.php.net/imagecreatetruecolor:

Note: This function will not work with GIF file formats.

LaNu [23.12.2007 02:03:53]

#

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.

Sorrowind [23.12.2007 14:29:45]

#

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.

tsuriga [23.12.2007 14:49:35]

#

Laita sinne

var_dump( $_FILES[ 'kuva' ][ 'type' ] );

kokeile upata jpeggi ja kato mitä se sanoo tyypiksi. Ja error_reporting( E_ALL | E_STRICT ); Perusdebuggia.

Sorrowind [23.12.2007 14:58:48]

#

"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

tsuriga [23.12.2007 15:03:56]

#

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]).

Sorrowind [23.12.2007 15:22:13]

#

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.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta