webForumDet fria alternativet

Skapa flera thumbnails

PHPur PHP

4 svar · 413 visningar · startad av henkepenka

Medlem sedan sep. 2002125 inlägg
Frågan#1

Hej,

Nu har det varit många frågor ang. bilduppladdning och skapande av thumbnails här på forumet. Nu kommer det en till.

Jag laddar upp en zipfil på servern, extraherar bilderna som är i, lägger till info om bilderna i min MySQL-databas.
Sen vill jag även skapa thumbnails av dessa bilder. I den koden som jag skickar med så packas alla filer upp, alla info läggs in i MySQL´en men endast 1 thumbnail skapas, och det är den första bilden i zipfilen. Inget felmeddelande , utan jag skickas tillbaka med "Header("Location: admin.php?katId=1");" precis som jag ska. Varför blir det så?

if($_GET['action'] == "extract"){
	
	$zipFilnamn = $_POST['txtZipFil'];
	
	$zip = new PclZip($zipFilnamn);
	if ($zip->extract(PCLZIP_OPT_PATH, 'pictures') == 0) {
		die("Error : ".$zip->errorInfo(true));
	}
	
	if (($list = $zip->listContent(1)) == 0) {
		die("Error : ".$zip->errorInfo(true));
	}
	
	for ($i=0; $i<sizeof($list); $i++) {
	
		for(reset($list[$i]); $key = key($list[$i]); next($list[$i])) {
			if($key == "filename"){
				$uppladdadBild = $list[$i][$key];
			}elseif($key == "size"){
				$bildStorlekTmp = $list[$i][$key];
				$bildStorlek = ($bildStorlekTmp / 1000000);
			}		
		}

		$PhotoUploaded = date("Y-m-d H:i:s");

		//Lägger till i MySQL-databasen
		

		//Skapa tumnaglar		
		
		$helasokvagen = "pictures/$uppladdadBild";
		$tumnagel = "pictures/thumb_$uppladdadBild";
		
		$src_im = imagecreatefromjpeg($helasokvagen);
		
		$dstW = 150;  // Bredd på thumbnail 
		$dstH = 150; // Höjd på thumbnail 
		
		$dst_im = imagecreatetruecolor($dstW, $dstH); 
		
		$srcW = imagesx($src_im); 
		$srcH = imagesy($src_im); 
		
		imagecopyresampled( $dst_im, $src_im, 0, 0, 0, 0, $dstW, $dstH, $srcW, $srcH); 
		imagejpeg($dst_im, $tumnagel, 60); 

		imagedestroy($src_im); 
		imagedestroy($dst_im); 	
	}
	Header("Location: admin.php?katId=1");
}

Tacksam för hjälp!

Medlem sedan feb. 2007278 inlägg
#2

Kan du ge en var_dump på $list?

Sedan verkar din inre for-loop vara ett omständligt sätt att replikera foreach. Vad har syntaxen för syfte?

Också den yttre loopen skulle jag gjort med foreach.

foreach ( $list as &$listpost ) {
    foreach ( $listpost as $key => $listpostvalue ) {

Att skicka som referens i foreach kräver PHP 5, men torde inte behövas för denna operation. Jag tar med det för elegansens skull.

Medlem sedan sep. 2002125 inlägg
#3

Tack så mkt! Funkar perfekt!

Medlem sedan juni 200032 967 inlägg
#4

Va bra att det funkade. Då kanske du kan passa på att acceptera rätt inlägg som lösning på problemet också?

Hur markerar jag vilket svar som löste mitt problem?

Medlem sedan sep. 2002125 inlägg
#5

Sorry, my misstake!

132 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)