man5 Posted May 3, 2014 Share Posted May 3, 2014 Originally I had an issue with images not oriented correctly when uploading from smartphone(iphone). So I used exif_read_data function to fix it. It orients the images properly now. Now the new issue that came with it is that if I am uploading a portrait image from iphone, it will be cut off at the bottom and on the right side. To fill the gap on the right side, it'll show a black background. I've attached a pic to show you. Can anyone tell me how I can fix it? Here is my code. // 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 } } } Quote Link to comment Share on other sites More sharing options...
man5 Posted May 3, 2014 Author Share Posted May 3, 2014 Does no one has an answer? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.