Minulla olisi kuva joka pitäisi suurentaa mutta suhteen pitäisi säilyä samana, jotenka miten sen teen.
Mä tein vähän aikaa sitten pienentävän funkkarin duunissa. Kenties voit soveltaa sitä toiseen suuntaan.
function resizeImage($filename, $maxw = 350, $maxh = 300) { $fn = pathinfo($filename); /* $dest oli alkujaan sitä varten että skaalattu kuva tallentuisi eri nimellä kuin alkuperäinen. Nyt $dest on sama kuin alkuperäinen ja skaalattu siis kirjoitetaan alkuperäisen päälle. */ $dest = $fn['dirname'] . "/" . $fn['basename']; /* Mikäli haluaa skaalata muita kuin .jpg-kuvia niin alla olevaan switchiin sitten vain */ switch (strtolower($fn['extension'])) { case "jpg": $img = imagecreatefromjpeg($filename); break; default: print("Unsupported image, only jpg-images are supported. Scaling aborted."); return $filename; break; } $imgs = getimagesize($filename); $imgw = $imgs[0]; $imgh = $imgs[1]; if ($imgw > $imgh && $imgw > $maxw) { $ratio = 1 - (($imgw - $maxw) / $imgw); $neww = ceil($imgw * $ratio); $newh = ceil($imgh * $ratio); $newim = imagecreatetruecolor($neww, $newh); imagecopyresampled($newim, $img, 0, 0, 0, 0, $neww, $newh, $imgw, $imgh); imagejpeg($newim, $filename, 60); return $dest; } elseif ($imgh > $maxh) { $ratio = 1 - (($imgh - $maxh) / $imgh); $neww = ceil($imgw * $ratio); $newh = ceil($imgh * $ratio); $newim = imagecreatetruecolor($neww, $newh); imagecopyresampled($newim, $img, 0, 0, 0, 0, $neww, $newh, $imgw, $imgh); imagejpeg($newim, $filename, 60); return $dest; } return $filename; // Mitään ei muutettu }
Kiitos tuo auttoi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.