None of these solutions helped me. That is how I decided to solve the problem.
// upload directory $upload_dir = "../uploads/"; // valid image formats $valid_formats = array("jpg", "jpeg", "png"); // maximum image size 1 mb $max_size = 1048576; // crop image width, height $nw = $nh = 800; $nw1 = $nh1 = 400; $nw3 = $nh3 = 200; $nw2 = $nh2 = 100; // checks that if upload_dir a directory/not if (is_dir($upload_dir) && is_writeable($upload_dir)) { // not empty file if (!empty($_FILES['image'])) { // assign file name $name = $_FILES['image']['name']; // $_FILES to execute all files within a loop if ($_FILES['image']['error'] == 4) { $message = "Empty FIle"; } if ($_FILES['image']['error'] == 0) { if ($_FILES['image']['size'] > $max_size) { echo "E-Image is too large!<br>"; $_SESSION['alert'] = "Image is too large!!"; } else if (!in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats)) { $_SESSION['alert'] = "This image is not a valid image format!!"; echo "E-This image is not a valid image format<br>"; } else if (file_exists($upload_dir . $name)) { $_SESSION['alert'] = "Image already exists!!"; echo "E-Image already exists<br>"; } else { // No error found! Move uploaded files $size = getimagesize($_FILES['image']['tmp_name']); $x = (int) $_POST['x']; $y = (int) $_POST['y']; $w = (int) $_POST['w'] ? $_POST['w'] : $size[0]; $h = (int) $_POST['h'] ? $_POST['h'] : $size[1]; // path for big image $big_image_path = $upload_dir . "big/" . $name; // medium image path $medium_image_path = $upload_dir . "medium/" . $name; // small image path $small_image_path = $upload_dir . "small/" . $name; // check permission if (!is_dir($upload_dir . "big/") && !is_writeable($upload_dir . "big/")) { mkdir($upload_dir . "big/", 0777, false); } if (!is_dir($upload_dir . "medium/") && !is_writeable($upload_dir . "medium/")) { mkdir($upload_dir . "medium/", 0777, false); } if (!is_dir($upload_dir . "small/") && !is_writeable($upload_dir . "small/")) { mkdir($upload_dir . "small/", 0777, false); } // image raw data from form $data = file_get_contents($_FILES["image"]["tmp_name"]); // create image $vImg = imagecreatefromstring($data); //create big image $dstImg = imagecreatetruecolor($nw, $nh); imagealphablending($dstImg, false); $trans_colour = imagecolorallocatealpha($dstImg, 0, 0, 0, 127); imagefilledrectangle($dstImg, 0, 0, $w, $h, $trans_colour); imagesavealpha($dstImg, true); imagecopyresampled($dstImg, $vImg, 0, 0, $x, $y, $nw, $nh, $w, $h); imagepng($dstImg, $big_image_path); //create medium thumb $dstImg1 = imagecreatetruecolor($nw1, $nh1); imagealphablending($dstImg1, false); $trans_colour1 = imagecolorallocatealpha($dstImg1, 0, 0, 0, 127); imagefilledrectangle($dstImg1, 0, 0, $w, $h, $trans_colour1); imagesavealpha($dstImg1, true); imagecopyresampled($dstImg1, $vImg, 0, 0, $x, $y, $nw1, $nh1, $w, $h); imagepng($dstImg1, $medium_image_path); // create smallest thumb $dstImg2 = imagecreatetruecolor($nw2, $nh2); imagealphablending($dstImg2, false); $trans_colour2 = imagecolorallocatealpha($dstImg2, 0, 0, 0, 127); imagefilledrectangle($dstImg2, 0, 0, $w, $h, $trans_colour2); imagesavealpha($dstImg2, true); imagecopyresampled($dstImg2, $vImg, 0, 0, $x, $y, $nw2, $nh2, $w, $h); imagepng($dstImg2, $small_image_path); /* * Database insertion */ $sql = "INSERT INTO tbl_inksand_product_gallery (" . "Product_Id,Gallery_Image_Big,Gallery_Image_Medium,Gallery_Image_Thumb," . "Gallery_Status,Created_By,Created_Datetime" . ") VALUES (" . "'{$Product_Id}','{$big_image_path}','{$medium_image_path}','{$small_image_path}'," . "'A','$Created_By','{$time}'" . ")"; db_query($sql); if (db_affected_rows() == 1) { if (imagedestroy($dstImg)) { $_SESSION['success'] = "Image uploaded successfully."; echo "S-Image uploaded successfully<br>"; } else { $_SESSION['alert'] = "Image not uploaded!!"; echo "S-Image not uploaded"; } } else { $_SESSION['alert'] = "Error in uploading image!!"; echo "E-Error in uploading image!!"; } } } } } else { mkdir($upload_dir, 0777); }