Need to fix image rotation problem when uploading and resizing images.
I have a function that does that. The image does rotate. However, the image also gets cut off at the bottom and the remaining width of the image is turned into black background. I've attached a sample to show you.
This only happens when uploading a portrait photo from iphone. Landscape taken photos look fine.
Here is my code. Hopefully you can point out something that I am not seeing.
// Uploading image with resize and crop. if (isset($_FILES['image'])) { if (empty($_FILES['image']['name'])) { ?><div class="add-errors">Please choose an image!</div><?php } else { function getOrientedImage($imagePath){ $image = imagecreatefromstring(file_get_contents($imagePath)); $exif = exif_read_data($imagePath); if(!empty($exif['Orientation'])) { switch($exif['Orientation']) { case 8: $image = imagerotate($image,90,0); break; case 3: $image = imagerotate($image,180,0); break; case 6: $image = imagerotate($image,-90,0); break; } } return $image; } $name = $_FILES['image']['name']; $temp = $_FILES['image']['tmp_name']; $type = $_FILES['image']['type']; $size = $_FILES['image']['size']; $ext = strtolower(end(explode('.', $name))); $size2 = getimagesize($temp); $width = $size2[0]; $height = $size2[1]; $upload = md5( rand( 0, 1000 ) . rand( 0, 1000 ) . rand( 0, 1000 ) . rand( 0, 1000 )); // Restrictions for uploading $maxwidth = 6000; $maxheight = 6000; $allowed = array('image/jpeg', 'image/jpg', 'image/png', 'image/gif'); // Recognizing the extension switch($type){ // Image/Jpeg case 'image/jpeg': $ext= '.jpeg'; break; // Image/Jpg case 'image/jpg': $ext= '.jpg'; break; // Image/png case 'image/png': $ext= '.png'; break; // Image/gif case 'image/gif': $ext= '.gif'; break; } // upload variables $path = $userDir . $upload . $ext; $thumb_path = $userDir . 'thumb_' . $upload . $ext; // check if extension is allowed. if (in_array($type, $allowed)) { // Checking if the resolution is FULLHD or under this resolution. if ($width <= $maxwidth && $height <= $maxheight) { if ($size <= 5242880) { // check the shape of the image if ($width == $height) {$shape = 1;} if ($width > $height) {$shape = 2;} if ($width < $height) {$shape = 3;} //Adjusting the resize script on shape. switch($shape) { // Code to resize a square image. case 1: $newwidth = 816; $newheight = 612; break; // Code to resize a tall image case 2: $newwidth = 816; $ratio = $newwidth / $width; $newheight = round($height * $ratio); break; // Code to resize a wide image. case 3: $newheight = 612; $ratio = $newheight / $height; $newidth = round($width * $ratio); break; } // Resizing according to extension. switch ($type) { // Image/Jpeg case 'image/jpeg'; $img = getOrientedImage($temp); $thumb = imagecreatetruecolor($newwidth, $newheight); imagecopyresized($thumb, $img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); imagejpeg($thumb, $thumb_path); break; // Image/Jpg case 'image/jpg'; $img = getOrientedImage($temp); $thumb = imagecreatetruecolor($newwidth, $newheight); imagecopyresized($thumb, $img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); imagejpeg($thumb, $thumb_path); break; // Image/png case 'image/png'; $img = getOrientedImage($temp); $thumb = imagecreatetruecolor($newwidth, $newheight); imagecopyresized($thumb, $img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); imagepng($thumb, $thumb_path); break; // Image/gif case 'image/gif'; $img = getOrientedImage($temp); $thumb = imagecreatetruecolor($newwidth, $newheight); imagecopyresized($thumb, $img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); imagegif($thumb, $thumb_path); break; } // Move the original file aswell. move_uploaded_file($temp, $path); } else { ?><div class="add-errors">Your image size is too big!</div><?php } } else { ?><div class="add-errors">Your image resolution exceeds the limit!</div><?php } } else { ?><div class="add-errors">Your have uploaded a forbidden extension!</div><?php } }
-
man5 -
Thanks
Signaturewww.imdabest.ca{{ DiscussionBoard.errors[9162751].message }} -