Here is a way to resize images in PHP without needing a framework like ImageMagick or GD
The below code is derived from here. With the function resize_image taking into account the original image width and height (ratio) to then follow that ratio in your resized image.
<?php
function resize_image($file, $w, $h)
{
//gets image height and width to determine ratio cut
list($width, $height) = getimagesize($file);
$r = $width / $height;
if ($w / $h > $r) {
$newwidth = $h * $r;
$newheight = $h;
} else {
$newheight = $w / $r;
$newwidth = $w;
}
//Get the file extension
$file_type = end(explode(".", $file));
switch ($file_type) {
case "png":
$src = imagecreatefrompng($file);
break;
case "jpeg":
case "jpg":
$src = imagecreatefromjpeg($file);
break;
}
//create a blank image and then copies over the new resized image
$out = imagecreatetruecolor($newwidth, $newheight);
imagecopyresampled($out, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
return $out;
}
//image to be resized
$filename = "original.png";
//save new resized image as
$save_as = "resized.png";
// resize the image with 600x600
$imgData = resize_image($filename, 600, 600);
//saves the image
imagepng($imgData, $save_as);
All you need to change is the input, output image name and the resize dimensions.