webForumDet fria alternativet

Gd + header problem

5 svar · 232 visningar · startad av danii

daniiMedlem sedan sep. 2004215 inlägg
#1

Hej!

Jag har en mapp med bilder. Så det jag vill göra är att loopa igenom mappen och skapa thumbnails av bilderna. Detta är enkelt. Problemet är att jag presenterar bilderna i table, det betyder att vi har html kod före headern och det går ju inte. Så jag blir tvungen att använda <img src="fil.php" />. Det som jag inte förstår är vad för kod som ska vara vart. Vi säger att jag har fil.php och fil2.php. I fil2.php finns tabellen. Jag antar att i fil.php så ska koden som gör thumbnail av filen finnas men då uppstår ett problem. Jag går in i fil2.php och där kommer all kod som loopar igenom mappen finnas. Den sätter in alla namn i en array. Då ska jag på något sätt få in dessa namn till fil.php som skapar en thumbnail och få tillbaka själva bilden som skrivs ut i tabellen. Eftersom det är flera stycken så ska jag ju loopa igenom hela arrayen.

Hur ska jag gå till väga?

Tacksam för alla synpunkter.

MatteMedlem sedan aug. 20002 975 inlägg
#2

Du får skicka med namnet på filen/bilden med din img-länkning typ:

<img src="fil.php?image=bild.jpg">

I fil.php hämtar du sedan filnamnet med $_GET['image'] och arbeta gentemot den.

Namnet på bilden lägger du in från arrayen i din loop i fil2.php.

daniiMedlem sedan sep. 2004215 inlägg
#3

Oj visste inte ens att man kunde göra så, trodde man inte fick.

daniiMedlem sedan sep. 2004215 inlägg
#4

Det fungerade :)

Är det något jag kan ändra i koden? Det går extremt långsamt:

<html>
<head>
</head>
<body>
<table>
<?php
	$pe = array("a.jpg", "b.jpg", "c.jpg");
	foreach($pe as $value){
?>
<tr><td>
<img src="test.php?bild=<?php echo $value; ?>" />
</td></tr>
<?php } 
?>
</table>
</body>
</html>
<?php
$bild = imagecreatefromjpeg('bilder/' . $_GET['bild']);
$bredd = imagesx($bild);
$hojd = imagesy($bild);
$max = max($bredd, $hojd);
$taBort = ($max > 100) ? 100/$max : 1;
$bredd2 = $bredd * $taBort;
$hojd2 = $hojd * $taBort;
$bild2 = imagecreatetruecolor($bredd2, $hojd2);
imagecopyresampled($bild2, $bild, 0, 0, 0, 0, $bredd2, $hojd2, $bredd, $hojd);
header("Content-type: image/jpeg");
imagejpeg($bild2, '', 90);
imagedestroy($bild);
imagedestroy($bild2);
?>
MatteMedlem sedan aug. 20002 975 inlägg
#5

Spara ner dina thumbnails till disk istället, och hämta dom därifrån så går det snabbare.

daniiMedlem sedan sep. 2004215 inlägg
#6

Ska ta och göra det. Märkte att "hastigheten" har med storleken (orginalstorleken) på bilden att göra.

126 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)