I’m trying to get a correctly rotated UIImage
from an ALAssetRepresentation
using the fullScreenImage
method. I have several testing photos shot in various device orientations; the photos show up correctly in the Photos app. The documentation for fullScreenImage
says:
In iOS 5 and later, this method returns a fully cropped, rotated, and adjusted image—exactly as a user would see in Photos or in the image picker.
To create a correctly-rotated
UIImage
object from theCGImage
, you useimageWithCGImage:scale:orientation:
orinitWithCGImage:scale:orientation:
, passing the values oforientation
andscale
.
Given the docs, my code looks like this:
ALAssetRepresentation *rep = [asset defaultRepresentation];
UIImage *img = [UIImage
imageWithCGImage:[rep fullScreenImage]
scale:[rep scale]
orientation:[rep orientation]];
But the resulting UIImage
’s rotation is wrong. When I replace [rep orientation]
with UIImageOrientationUp
, the image is fine for all testing photos. Obviously I’m hesitating to stick with this “solution”, as it feels like a hack. What am I doing wrong?
ALAssetRepresentation *rep = [asset defaultRepresentation];
UIImage *img = [UIImage
imageWithCGImage:[rep fullScreenImage]
scale:[rep scale]
orientation:UIImageOrientationUp];
Is correct as under iOS 5 the fullscreenimages is already rotated (so it’s always “up”). Under iOS 4 the behaviour is different. Please see Orientation does not behave correctly with Photo in ALAsset for a more in depth explanation.
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