iPhone摄像头图片旋转出现——CGAffineTransformInvert:奇异矩阵

iPhone摄像头图片旋转出现——CGAffineTransformInvert:奇异矩阵,iphone,objective-c,cocoa-touch,uiimage,Iphone,Objective C,Cocoa Touch,Uiimage,我正在从图像选择器获取UIImage并将其放入UIImageView。它对常规图像效果很好,但对于iphone相机拍摄的图像,它们有时会旋转90度 当以后访问其中一个图像时(它已经保存到磁盘上),我注意到上面的错误 有什么想法吗?我认为这与iphone在拍摄照片时存储有关相机位置的额外exif元数据有关,但是其中一张照片是在纵向模式下拍摄的,并以某种方式旋转到横向。我使用的解决方案是按照imageOrientation属性的指示旋转和翻转图像。这里有一些代码可以实现以下功能: UIImageVi

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

当以后访问其中一个图像时(它已经保存到磁盘上),我注意到上面的错误


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

我使用的解决方案是按照
imageOrientation
属性的指示旋转和翻转图像。这里有一些代码可以实现以下功能:


UIImageView会自动旋转和翻转,因此,如果您所做的只是在屏幕上这样显示它,这不是问题。

我使用的解决方案是按照
imageOrientation
属性的指示旋转和翻转图像。这里有一些代码可以实现以下功能:


UIImageView会自动旋转和翻转,因此,如果您所做的只是在屏幕上这样显示它,这并不是一个问题。

您是对的,手机会将旋转元数据存储在图像中,以指示旋转显示的方式。这可能是一个EXIF标签;它可能是完全不同的东西,苹果告诉你的一切都是以UIImage的形式出现的

UIImage在许多方面都是CGImage的简单包装器。在这种情况下,CGImage是一个“哑”对象,它只知道/关心原始图像数据;没有比旋转信息更高级的东西了。UIImage将其与旋转和其他信息结合在一起,形成一个方便的类。其中一个好处是UIImage自动知道如何以正确的旋转绘制自身


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

手机会将旋转元数据与图像一起存储,以指示旋转显示的方式,这是正确的。这可能是一个EXIF标签;它可能是完全不同的东西,苹果告诉你的一切都是以UIImage的形式出现的

UIImage在许多方面都是CGImage的简单包装器。在这种情况下,CGImage是一个“哑”对象,它只知道/关心原始图像数据;没有比旋转信息更高级的东西了。UIImage将其与旋转和其他信息结合在一起,形成一个方便的类。其中一个好处是UIImage自动知道如何以正确的旋转绘制自身


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

似乎没有其他人报告过这个问题,但这段代码在
CGContextDrawImage(UIGraphicsGetCurrentContext(),CGRectMake(0,0,宽度,高度),imgRef)上对我来说崩溃了
用于我的iOS 5应用程序,当使用在纵向模式下(但不是在横向模式下)拍摄的相机拍摄的照片时。似乎没有其他人报告过此问题,但此代码在
CGContextDrawImage(UIGraphicsGetCurrentContext(),CGRectMake(0,0,宽度,高度),imgRef)处对我来说崩溃了
适用于我的iOS 5应用程序,当使用相机在纵向模式下拍摄的照片时(而不是在横向模式下)。