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.