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 the CGImage
, you use
imageWithCGImage:scale:orientation:
or
initWithCGImage:scale:orientation:
, passing the values of orientation
and scale
.
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?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…