PHPImageResize
From XPUB & Lens-Based wiki
// scale src image to fit given w / h
$sw = imagesx($src);
$sh = imagesy($src);
// try "fit width" ($nw = $tw)
$center = true;
$sdx = 0; $sdy = 0;
$nw = $w;
$nh = round($sh * ($nw / $sw));
if ($nh < $h) {
// if height is to small "fit height"
$nh = $h;
$nw = round($sw * ($nh / $sh));
if ($center) { $sdx = round(($nw - $w) / 2); }
} else {
if ($center) { $sdy = round(($nh - $h) / 2); }
}
// scale image
$scaledimage = imagecreatetruecolor($nw, $nh);
imagecopyresampled($scaledimage, $src, 0, 0, 0, 0, $nw, $nh, $sw, $sh);