crisse6 Medlem sedan dec. 2000 2 526 inlägg Frågan 29 aug. 2005 20:10 #1 Tjena!
Har försökt få ihop uppladdning och skalning av bilder här. Men det fuckar sig. Den laddar upp bilderna, skalar dom, men thumben får namnet "C" utan filändelse och läggs dessutom inte i "thumbs"-mappen! Weird!
Vore nice om ni kan checka koden:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Ladda upp!</title>
</head>
<body>
<?
if (isset($_FILES['fildata'])) {
if (is_uploaded_file($_FILES['fildata']['tmp_name'])) {
if (empty($_POST['besk']))
$besk = "Ingen beskrivning!";
else
$besk = $_POST['besk'];
$dbh = @mysql_connect("localhost", "root", "creature")
or die("Ingen koppling där du!");
mysql_select_db("gallery");
$filnamn = $_FILES['fildata']['name'];
$filtyp = $_FILES['fildata']['type'];
$filstorlek = $_FILES['fildata']['size'];
$sql = "Insert into upload (filnamn, filtyp, filstorlek, fildata, besk)";
$sql .= " Values ('$filnamn', '$filtyp', '$filstorlek', '$fildata', '$besk')";
mysql_query($sql);
$fil_id = mysql_insert_id();
//Här börjar skalning
$mapp = "pics/";
$mapp2 = "pics/thumbs/";
$storlek = getimagesize($_FILES['fildata']['tmp_name']);
$nybredd = 90;
$nyhojd = 90;
$nybredd2 = 600;
$nyhojd2 = 600;
if (($storlek[0] - $nybredd) >= ($storlek[1] - $nyhojd)) {
$bildbredd = $nyhojd;
$bildhojd = ($nybredd/$storlek[0])*$storlek[1];
} else {
$bildhojd = $nyhojd;
$bildbredd = ($bildhojd/$storlek[1])*$storlek[0];
}
$bild_kalla = imagecreatefromjpeg($_FILES['fildata']['tmp_name']);
// GD2
$bild_skapa = imagecreatetruecolor($bildbredd, $bildhojd);
imagecopyresampled ($bild_skapa, $bild_kalla, 0, 0, 0, 0, $bildbredd, $bildhojd, $storlek[0], $storlek[1]);
imagejpeg ($bild_skapa, $mapp.$_FILES['fildata']['tmp_name'], 100);
imagedestroy ($bild_skapa);
// skapa stor bild
if (($storlek[0] - $nybredd2) >= ($storlek[1] - $nyhojd2)) {
$bildbredd = $nyhojd2;
$bildhojd = ($nybredd2/$storlek[0])*$storlek[1];
} else {
$bildhojd = $nyhojd2;
$bildbredd = ($bildhojd/$storlek[1])*$storlek[0];
}
$bild_kalla = imagecreatefromjpeg($_FILES['fildata']['tmp_name']);
// GD2
$bild_skapa = imagecreatetruecolor($bildbredd, $bildhojd);
imagecopyresampled ($bild_skapa, $bild_kalla, 0, 0, 0, 0, $bildbredd, $bildhojd, $storlek[0], $storlek[1]);
imagejpeg ($bild_skapa, $mapp2.$_FILES['fildata']['tmp_name'], 100);
imagedestroy ($bild_skapa);
echo "Allt e nu klart!";
//Slut på skalning
move_uploaded_file($_FILES['fildata']['tmp_name'],"pics/".$_FILES['fildata']['name']);
echo "<b>Filen fick id $fil_id</b><br>";
echo mysql_error();
mysql_close();
}
}
?>
<form action="index.php" method="post" enctype="multipart/form-data">
Välj bild att ladda upp:<br>
<input type="file" name="fildata"><br>
Beskrivning av bilden:<br>
<input type="text" name="besk"><br>
<input type="submit" value="Ladda upp!">
</form>
</body>
</html>
Matte Medlem sedan aug. 2000 2 975 inlägg Ändra till
imagejpeg ($bild_skapa, $mapp.$_FILES['fildata']['name'], 100);
// resp
imagejpeg ($bild_skapa, $mapp2.$_FILES['fildata']['name'], 100);
$_FILES['fildata']['tmp_name'] anger sökvägen till filen i temp-katalogen (inklusive temporärt namn).
crisse6 Medlem sedan dec. 2000 2 526 inlägg ah.. okej! funkar ju fint.. men grejen är ju den nu att den som hamnar i thumbs blir större än den som hamnar i pics, men jag tror ändå att den i pics skalas... hmm... måste ju ha något med jämföringen där... ??
Matte Medlem sedan aug. 2000 2 975 inlägg Du får väl ändra till vilka kataloger de ska sparas.
crisse6 Medlem sedan dec. 2000 2 526 inlägg Ja, men dom e ju rätt. Innan jag bytte kodraden du gav mig så la dom ju sig rätt men då blev det ju fel filändelse osv.. Okaj? Okaaaaaj!
Matte Medlem sedan aug. 2000 2 975 inlägg Använd den kod du hade, fast ändra i funktionen imagejpeg() från $_FILES['fildata']['tmp_name'] till $_FILES['fildata']['name'].
crisse6 Medlem sedan dec. 2000 2 526 inlägg Ja, ändrade ju bara det! Och då blev det fel med placeringarna... :S
Matte Medlem sedan aug. 2000 2 975 inlägg Titta på det här:
$mapp = "pics/";
$mapp2 = "pics/thumbs/";
$storlek = getimagesize($_FILES['fildata']['tmp_name']);
$nybredd = 90;
$nyhojd = 90;
$nybredd2 = 600;
$nyhojd2 = 600;
Du kör med $mapp mot $nybredd/$nyhöjd och $mapp2 mot $nybredd2/$nyhöjd2.
Då får du den stora bilden i thumbskatalogen.
Det är bara att byta plats på dom, t.ex. genom att ändra till
$mapp2 = "pics/";
$mapp = "pics/thumbs/";