UIImagePickerController returning incorrect image orientation

orientation, scale, uiimage, uiimagepickercontroller

Solution

I just started working on this issue in my own app.

I used the UIImage category that Trevor Harmon crafted for resizing an image and fixing its orientation, UIImage+Resize.

Then you can do something like this in `-imagePickerController:didFinishPickingMediaWithInfo:`

UIImage *pickedImage = [info objectForKey:UIImagePickerControllerEditedImage];
UIImage *resized = [pickedImage resizedImageWithContentMode:UIViewContentModeScaleAspectFit bounds:pickedImage.size interpolationQuality:kCGInterpolationHigh];

This fixed the problem for me. The resized image is oriented correctly visually and the imageOrientation property reports UIImageOrientationUp.

There are several versions of this scale/resize/crop code out there; I used Trevor's because it seems pretty clean and includes some other UIImage manipulators that I want to use later.

Problem

I'm using UIImagePickerController to capture an image and then store it. However, when i try to rescale it, the orientation value i get out of this image is incorrect. When i take a snap by holding the phone Up, it gives me orientation of Left. Has anyone experienced this issue? The UIImagePickerController dictionary shows following information: ``` { UIImagePickerControllerMediaMetadata = { DPIHeight = 72; DPIWidth = 72; Orientation = 3; "{Exif}" = { ApertureValue = "2.970853654340484"; ColorSpace = 1; DateTimeDigitized = "2011:02:14 10:26:17"; DateTimeOriginal = "2011:02:14 10:26:17"; ExposureMode = 0; ExposureProgram = 2; ExposureTime = "0.06666666666666667"; FNumber = "2.8"; Flash = 32; FocalLength = "3.85"; ISOSpeedRatings = ( 125 ); MeteringMode = 1; PixelXDimension = 2048; PixelYDimension = 1536; SceneType = 1; SensingMethod = 2; Sharpness = 1; ShutterSpeedValue = "3.910431673351467"; SubjectArea = ( 1023, 767, 614, 614 ); WhiteBalance = 0; }; "{TIFF}" = { DateTime = "2011:02:14 10:26:17"; Make = Apple; Model = "iPhone 3GS"; Software = "4.2.1"; XResolution = 72; YResolution = 72; }; }; UIImagePickerControllerMediaType = "public.image"; UIImagePickerControllerOriginalImage = "<UIImage: 0x40efb50>"; } ``` However picture returns `imageOrientation == 1`; ``` UIImage *picture = [info objectForKey:UIImagePickerControllerOriginalImage]; ```

Original source