webForumDet fria alternativet

Problem med thumbs...

PHP

7 svar · 211 visningar · startad av crisse6

Medlem sedan dec. 20002 526 inlägg
Frågan#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>
Medlem sedan aug. 20002 975 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).

Medlem sedan dec. 20002 526 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... ??

Medlem sedan aug. 20002 975 inlägg
#4

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

Medlem sedan dec. 20002 526 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!

Medlem sedan aug. 20002 975 inlägg
#6

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

Medlem sedan dec. 20002 526 inlägg
#7

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

Medlem sedan aug. 20002 975 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/";
260 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)