What are the best practices for handling user-uploaded images of varying sizes and dimensions in a PHP application?

When handling user-uploaded images of varying sizes and dimensions in a PHP application, it is important to resize and crop the images to a consistent size to maintain a uniform appearance on the website. This can be achieved by using PHP image manipulation libraries such as GD or Imagick to process the uploaded images.

// Example code using GD library to resize and crop user-uploaded image
$uploadedImage = 'path/to/uploaded/image.jpg';
$desiredWidth = 300;
$desiredHeight = 200;

list($width, $height) = getimagesize($uploadedImage);
$ratio = $width / $height;

if ($desiredWidth / $desiredHeight > $ratio) {
    $newWidth = $desiredHeight * $ratio;
    $newHeight = $desiredHeight;
} else {
    $newHeight = $desiredWidth / $ratio;
    $newWidth = $desiredWidth;
}

$src = imagecreatefromjpeg($uploadedImage);
$dst = imagecreatetruecolor($desiredWidth, $desiredHeight);

imagecopyresampled($dst, $src, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);

imagejpeg($dst, 'path/to/save/resized/image.jpg', 100);

imagedestroy($src);
imagedestroy($dst);