Jooakim Skrevet 5. august 2009 Del Skrevet 5. august 2009 (skjer med at det ikke er php-highlight her?) if($_POST['newpix']) { $origimg = $_FILES['pix']['tmp_name']; $imagedata = getimagesize($origimg); $maxw = 204; $maxh = 250; $rand = date('U'); $pixname = 'pix/intro/'.$_GET['id'].'_'.$rand.'.jpg'; $pname = $_GET['aID'].'_'.$rand.'.jpg'; $imagewidth = $imagedata[0]; $imageheight = $imagedata[1]; if(($imagewidth > $maxw) || ($imageheight > $maxh)) { if($imagewidth > $imageheight) { $lol = '1'; $newimgw = $maxw; $ratio = $maxh/$imageheight; $newimgh = $imageheight*$ratio; } elseif($imageheight > $imagewidth) { $lol = '2'; $newimgh = $maxh; $ratio = $maxw/$imageheight; $newimgw = $imagewidth*$ratio; } else { $lol = '3'; $newimgh = $maxh; $newimgw = $maxw; } $marg = ($newimgw-$maxw)/2; $newimg = imagecreatetruecolor($newimgw, $newimgh); $oldimg = imagecreatefromjpeg($origimg); imagecopyresampled($newimg, $oldimg, 0, 0, 0, 0, $newimgw, $newimgh, $imagewidth, $imageheight); imagejpeg($newimg, $pixname, 100); } else { $newimg = imagecreatetruecolor($imagewidth, $imageheight); $oldimg = imagecreatefromjpeg($origimg); imagecopyresampled($newimg, $oldimg, 0, 0, 0, 0, $imagewidth, $imageheight, $imagewidth, $imageheight); imagejpeg($newimg, $pixname, 100); $marg = ($maxw-$imagewidth)/2; } $margin = round($marg); } else { $pname = $fetch['pix']; $margin = $fetch['pixM']; } echo '$lol='.$lol; echo '<br />'; echo '$newimgw='.$newimgw; echo '<br />'; echo '$ratio='.$ratio; echo '<br />'; echo '$newimgh='.$newimgh; echo '<br />'; echo '$imageheight='.$imageheight; echo '<br />'; echo '$imagewidth='.$imagewidth; Resultat: $lol=2$newimgw=139.975384615 $ratio=0.313846153846 $newimgw=250 $imageheight=650 $imagewidth=446 Jeg prøvde å resize samme bilde i Photoshop. Da jeg satte bredden til 250px ble høyden satt til 172.px.- Høyde-ratioen skal altså være 0,313846153846. - Bredde-ratioen skal være 0,392376 (172/446 - 172px photoshop | 446px orignal bilde-bredde) - 0,392376*650=255 (så bredde-ratioen vil ikke fungere som høyde-ratio). Dette betyr at jeg må ha to forskjellige ratioer, og problemet er hvordan jeg skal finne ut bredde-ratioen (og høyde-ratioen når bildet er bredere enn det er høyt). Takk for hjelp. Lenke til kommentar
Ernie Skrevet 5. august 2009 Del Skrevet 5. august 2009 (endret) Du er litt på villspor når du kalkulerer ut den nye høyden og bredden. Hvorvidt høyden er større enn bredden eller motsatt er irrelevant for kalkuleringen. Det du kan gjøre er å regne ut ratio for både maksstørrelsen og den reelle størrelsen. Ut fra det kan man finne ut om man må endre størrelsen ut fra høyden eller bredden. $maxw = 204; $maxh = 250; $imagewidth = 446; $imageheight = 650; $maxratio = $maxh/$maxw; $imageratio = $imageheight/$imagewidth; if ($maxratio > $imageratio) { //Image is proportionally wider than max, resize using width $newimgw = $maxw; $newimgh = ($maxw/$imagewidth)*$imageheigth; } else { //Image is either proportionally higher than max or they're the same. // Either way we'll use the height $newimgh = $maxh; $newimgw = ($maxh/$imageheight)*$imagewidth; } Dette vil gi deg de riktige verdiene bortsett fra at man risikerer at de kan være flyttall. Bruk floor, ceil eller round for å runde av $newimgh og $newimgw når de blir kalkulert. Endret 5. august 2009 av Ernie Lenke til kommentar
Jooakim Skrevet 5. august 2009 Forfatter Del Skrevet 5. august 2009 Ah, nydelig - takk skal du ha! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå