function generateRandomString($length = 10)
{
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString . '.jpg';
}
if(isset($_FILES["studentProfile"]))
{
$uploadDir = '../../vendor/img/students/';
$fileName = $_FILES['studentProfile']['name'];
$fileTmpName = $_FILES['studentProfile']['tmp_name'];
$fileType = $_FILES['studentProfile']['type'];
if ($_FILES['studentProfile']['error'] === UPLOAD_ERR_NO_FILE)
{
if($stuGender === "male")
{
$StuImgId = "male.jpg";
}
elseif($stuGender === "female")
{
$StuImgId = "female.jpg";
}
else
{
$StuImgId = "default.jpg";
}
}
else
{
$allowedTypes = ['image/jpeg', 'image/png'];
if (!in_array($fileType, $allowedTypes))
{
$message = "Error: Only JPG or PNG files are allowed.";
exit;
}
if ($fileType == 'image/png')
{
$source = imagecreatefrompng($fileTmpName);
$fileName = $uploadDir . generateRandomString();
imagejpeg($source, $fileName);
imagedestroy($source);
}
else
{
$fileName = $uploadDir . generateRandomString();
move_uploaded_file($fileTmpName, $fileName);
}
$newWidth = 413;
$newHeight = 531;
list($width, $height) = getimagesize($fileName);
$imageResized = imagecreatetruecolor($newWidth, $newHeight);
$source = imagecreatefromjpeg($fileName);
imagecopyresized($imageResized, $source, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
imagejpeg($imageResized, $fileName);
imagedestroy($source);
imagedestroy($imageResized);
$compressionQuality = 75;
$source = imagecreatefromjpeg($fileName);
imagejpeg($source, $fileName, $compressionQuality);
imagedestroy($source);
$upath = parse_url($fileName, PHP_URL_PATH);
$StuImgId = basename($upath);
}
}
When I upload this code using type=file everything is working properly except that the image is rotated, like this:

Can anyone suggest how to fix this issue? Specifically it is happening when I upload large size photos.