webForumDet fria alternativet

Problem med thumbs...

7 svar · 211 visningar · startad av crisse6

crisse6Medlem sedan dec. 20002 441 inlägg
#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>
MatteMedlem sedan aug. 20002 970 inlägg
#2

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

crisse6Medlem sedan dec. 20002 441 inlägg
#3

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

MatteMedlem sedan aug. 20002 970 inlägg
#4

Du får väl ändra till vilka kataloger de ska sparas.

crisse6Medlem sedan dec. 20002 441 inlägg
#5

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!

MatteMedlem sedan aug. 20002 970 inlägg
#6

Använd den kod du hade, fast ändra i funktionen imagejpeg() från $_FILES['fildata']['tmp_name'] till $_FILES['fildata']['name'].

crisse6Medlem sedan dec. 20002 441 inlägg
#7

Ja, ändrade ju bara det! Och då blev det fel med placeringarna... :S

MatteMedlem sedan aug. 20002 970 inlägg
#8

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/";
Genererad på 386 ms · cache AV · v20260730165559-full.f96bc7eb