iOS 7、Xcode 5
我正在将照片加载到 UIImageView 中,并注意到它们会自动重新定向以显示“正面朝上”。您可以用手机拍摄 4 张照片,每次将手机旋转 90 度,然后在手机上查看图像,您可以看到相同的效果。
问题是我试图在加载图像后实现一些旋转,但效果错误。
例如,我有一张用 iPhone 垂直拍摄的照片(主页按钮位于底部)。 当我将图像复制到 UIImageView 中时,它会重新定向为面朝上(没有我的代码)。 我不想要这个。 当我制作另一个副本并应用旋转时,旋转似乎与原始 tmp 图像相反! 我想要得到的是一个图像,它是镜子。
这是我的代码:
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
[self dismissViewControllerAnimated:YES completion:nil];
imageTmp=info[UIImagePickerControllerOriginalImage];
NSLog(@"original orientation:%li",imageTmp.imageOrientation);
self.imageA.image=imageTmp;
self.imageB.image=[UIImage imageWithCGImage:[imageTmp CGImage]
scale:1.0
orientation:UIImageOrientationUpMirrored];
}
在上面的屏幕截图中,左侧的图像是用手机垂直拍摄的。 然后我将它加载到 UIImage 中。 接下来,我将它复制到 UIImageView“imageA”中。 最后,我将“imageTmp”转换并复制到另一个 UIImageView“imageB”中。 请注意,左图是自动重新定向的(我不想要这个!),而右图是根据实际横向版本进行转换的。
如何防止自动重新定向?
最佳答案
通过从 CGImage 创建一个新的 UIImage 并且不指定方向,您可以获得没有任何隐含旋转的图像:
naturalImage = [UIImage imageWithCGImage:[originalImage CGImage]];
请注意,正如我在上面的评论中提到的,这实际上总是 LandscapeRight(我想,也许是 LandscapeLeft,我懒得记住哪个是哪个),因为这就是相机记录图像的方式.
关于ios - 如何覆盖 iOS 中图像的自动重新定位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23943616/