ios - 如何覆盖 iOS 中图像的自动重新定位?

标签 ios objective-c graphics

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];
}

enter image description here

在上面的屏幕截图中,左侧的图像是用手机垂直拍摄的。 然后我将它加载到 UIImage 中。 接下来,我将它复制到 UIImageView“imageA”中。 最后,我将“imageTmp”转换并复制到另一个 UIImageView“imageB”中。 请注意,左图是自动重新定向的(我不想要这个!),而右图是根据实际横向版本进行转换的。

如何防止自动重新定向?

最佳答案

通过从 CGImage 创建一个新的 UIImage 并且不指定方向,您可以获得没有任何隐含旋转的图像:

naturalImage = [UIImage imageWithCGImage:[originalImage CGImage]];

请注意,正如我在上面的评论中提到的,这实际上总是 LandscapeRight(我想,也许是 LandscapeLeft,我懒得记住哪个是哪个),因为这就是相机记录图像的方式.

关于ios - 如何覆盖 iOS 中图像的自动重新定位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23943616/

相关文章:

python - 有谁在 iOS 上成功安装了 Selenium 吗?

ios - iOS 版 Air "Device Error: Please check if there is enough space on the device."

objective-c - MKMapView RegionDidChangeAnimated 由用户操作或程序调用

ios - 如何默认展开iOS Today Widget?

c++ - 将 OpenGL 窗口添加到 GTK 构建器中

algorithm - 视觉解释的来源?

java - 使图形对象移动

ios - iOS-Phonegap-条码扫描器

ios - 在 xcode 输出中禁用日期/进程 ID

objective-c - Objective-C:触摸绘图不透明度