AsaMedlem sedan dec. 20011 860 inlägg Jag behöver en funktion som skalar ner en bild så den max kan vara 120 px på bredden samt 120 px på höjden. Den skall skalas om endast vid visningen av bilden. Thumbbilden skall inte sparas utan bara visas som liten.
Har en ruta som är 130 x 130 px där detta skall visas i.
Om en bild är ex: 160 x 240 px så skall den så skalas ner så att bilden kommer bli 80 x 120 px. Sen om nästa bild har 240 x 160 px så blir den 120 x 80 px. o.s.v
Här ser ni ifall ni inte förstår hur jag skulle vilja ha det. Det är inte min sida men det visar hur det skall vara: http://www.hansbillgren.se/galleri_40.php
Någon som kan hjälpa mig? Behövs det någon komponent för detta? Eller kan det lösas iallafall?
fiddlerMedlem sedan juli 20023 617 inlägg Det räcker att du har GD aktiverat, vilket du troligtvis har.
Jag gjorde en gång i tiden exakt det skript du beskriver, jag ska leta lite...
AsaMedlem sedan dec. 20011 860 inlägg Tackar :) För GD vet jag inget alls om... :/
fiddlerMedlem sedan juli 20023 617 inlägg Tror detta ska fungera :)
Döp filen till thumb.php
<?
//Skriptet tar argumenten från URL:n ex: ?pic=bild.jpg
function thumb($pic)
{
$max = 120;// Max
$kvalitet = 80;// <=100
// Läser in den stora bilden och kollar storleken på den.
$stor_bild = imagecreatefromjpeg ($pic);
$stor_x = imagesx ($stor_bild);
$stor_y = imagesy ($stor_bild);
// Räknar ut $k som är förhållandet mellan bredden och höjden.
$k = ($stor_x > $stor_y)?$max/$stor_x:$max/$stor_y;
// Räknar ut bredden och höjden på mini-bilden.
$x = round($k * $stor_x);
$y = round($k * $stor_y);
// Skapar bilden.
$liten_bild = imagecreatetruecolor ($x, $y);
imagecopyresampled ($liten_bild, $stor_bild, 0, 0, 0, 0, $x, $y, $stor_x, $stor_y);
// Skriver ut bilden
imagejpeg ($liten_bild, "", $kvalitet);
//Tar bort bilderna ur minnet på PHP.
imagedestroy ($liten_bild);
imagedestroy ($stor_bild);
}
if(isset($_GET['pic']))
{
thumb($_GET['pic']);
}
?>
Ex:
<img src="thumb.php?pic=bilder/bild.jpg" />
AsaMedlem sedan dec. 20011 860 inlägg Verkar funka men skall testa vidare och återkommer om jag märker att det inte funkar som det ska göra.