25. juni 2004 - 16:55
Der er
6 kommentarer og
1 løsning
Lave kopi af billede
Hej
jeg har fået bikset denne billede uploade kode op. (jeg har tjek på at de sidste tre bogstaver skal være - jpg, gif eller png).
$uploadfile = $_FILES['billedesti']['tmp_name'];
$uploaddir = $_SERVER["DOCUMENT_ROOT"] . "/bruger/" . $_SESSION['brugerID'] . "/" ;
$filnavn = time() . $_FILES['billedesti']['name'];
move_uploaded_file($_FILES['billedesti']['tmp_name'], $uploaddir. $filnavn);
Jeg vil have et råd, for jeg vil gerne lave tumpnails. Skal jeg lade PHP skalere billede hver gang det hentes, eller skal jeg lave en kopi af billedet der overholder tumpnails reglerne.
Jeg tror på det sidste, så hvordan kan en kode der kopiere orginal billede, skalere så width ikke er over 100px og height ikke er over 100px.
Ex. må width gerne være 78px, bare height er 100px, og omvendt.
Vh. Casper
Først nogle variabler der skal sættes
$imgpath = "ditbillede.jpg";
$maxsize = 100;
Så skal du snuppe du størrelsen af billedet.
$sizes = getimagesize($imgpath);
Så $sizes[0] er nu x (width), og $sizes[1] er nu y (height).
Da du ikke vil have at det skal være mere end 100px stort, finder vi den største værdi af bredden og højden.
$biggestsize = max($sizes[0],$sizes[1]);
Så skal du have forholdet mellem den største størrelse, og $maxsize (som er 100).
$scale = $maxsize/$biggestsize;
Da du nu har forholdet mellem de to, gange du bare det tal med den mindste størrelse.
$smallestsize = min($sizes[0],$sizes[1]);
$newsize = $scale*$smallestsize;
Så nu er den største størrelse (de 100 pixels) i $maxsize, og den mindte størrelse i $newsize - og i det rigtige forhold.
Det bliver dog et problem hvis du ikke har gdlib2. Har du mulighed for at få det, skal resten af koden se sådan her ud:
header("Content-type: image/jpeg");
$srcimage = ImageCreateFromJPEG($imgpath);
if (max($sizes[0],$sizes[1]) == $sizes[0]) {
$destimage = imagecreatetruecolor($maxsize, $newsize);
imagecopyresampled($destimage,$srcimage,0,0,0,0,$maxsize,$newsize,$sizes[0],$sizes[1]);
} else {
$destimage = imagecreatetruecolor($newsize, $maxsize);
imagecopyresampled($destimage,$srcimage,0,0,0,0,$newsize,$maxsize,$sizes[0],$sizes[1]);
}
imagejpeg($destimage);
--
Dette er dog ikke testet helt igennem :)