iPhone相机图片旋转起来 - CGAffineTransformInvert:奇异矩阵

时间:2009-04-19 17:13:40

标签: iphone objective-c cocoa-touch uiimage

我从图像选择器获取UIImage并将其放入UIImageView。它适用于常规图像,但对于使用iphone相机拍摄的图像,它们有时会旋转90度。

稍后访问其中一个图像时(它已保存到磁盘)我注意到上述错误。

有什么想法吗?我认为它与iphone有关,可以在照片拍摄时存储有关相机位置的额外exif元数据,但其中一张照片是以纵向模式拍摄的,并以某种方式旋转到横向。

2 个答案:

答案 0 :(得分:3)

我使用的解决方案是旋转&按照imageOrientation属性的指示翻转图像。这里有一些代码可以解决这个问题:UIImage fix

UIImageView旋转&自动翻转,所以如果您只是在屏幕上显示它就不会有问题。

答案 1 :(得分:0)

您是对的,手机会将旋转元数据与图像一起存储,以指示应旋转哪一种方式进行显示。这可能是EXIF标签;它可能是完全不同的东西,所有Apple都告诉你的是UIImage。

UIImage在很多方面都是CGImage的简单包装。在这种情况下,CGImage图像是一个“哑”对象,它只知道/关心原始图像数据;没有任何像旋转信息那么高级别的东西。 UIImage将旋转和其他信息与一个方便的课程结合在一起。其中一个好处就是UIImage会自动知道如何通过正确的旋转来绘制自己。

所以黄金基本上可以在大多数应用中避免与CGImage交互。 UIImage应该做你想要的几乎所有事情,并处理更高级别的旋转信息等。否则你会遇到大多数图像正确绘制的奇怪情况,但有些图像是旋转的。