I have an AJAX form that sends 4 pictures to and PHP form handler. The accepted formats are .gif, .png, .jpg or .jpeg. I am checking the image file type using javascript before sending the form.
Now, in PHP I have this code:
while($x <= 4) {
$target_dir = "files/";
$target_file = $target_dir . basename($_FILES["fileUpload".$x]["name"]);
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
if (move_uploaded_file($_FILES["fileUpload".$x]["tmp_name"], $target_file)) {
$filename = date("d-m-Y---H-i-s---").rand(10000,99999);
$oldfile = $target_file;
$newfile = $target_dir . $filename . "." . $imageFileType;
rename($oldfile, $newfile);
$file[$x] = $filename . "." . $imageFileType;
$fileCounter++;
}
$x++;
}
Some people will upload large image files and I want to automatically resize them to a maximum width/height without cropping the image. How can I do that using PHP?
You can use php GD library for this. Inside your if condition after rename function you can write this code:
list($width, $height) = getimagesize($file);
$ratio = $width / $height;
if( $ratio > 1) {
$resized_width = 500; //suppose 500 is max width or height
$resized_height = 500/$ratio;
}
else {
$resized_width = 500*$ratio;
$resized_height = 500;
}
if ($imageFileType == 'png') {
$image = imagecreatefrompng($newfile);
} else if ($imageFileType == 'gif') {
$image = imagecreatefromgif($newfile);
} else {
$image = imagecreatefromjpeg($newfile);
}
$resized_image = imagecreatetruecolor($resized_width, $resized_height);
imagecopyresampled($resized_image, $image, 0, 0, 0, 0, $resized_width, $resized_height, $width, $height);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With