我从图像选择器中获取 UIImage 并将其放入 UIImageView 中。它适用于常规图像,但对于使用 iphone 相机拍摄的图像,它们有时会旋转 90 度。
稍后访问其中一张图像时(它已保存到磁盘),我注意到上述错误。
有任何想法吗?我认为这与 iphone 在拍摄照片时存储有关相机位置的额外 exif 元数据有关,但是其中一张照片是在纵向模式下拍摄的,并且以某种方式旋转到横向。
我从图像选择器中获取 UIImage 并将其放入 UIImageView 中。它适用于常规图像,但对于使用 iphone 相机拍摄的图像,它们有时会旋转 90 度。
稍后访问其中一张图像时(它已保存到磁盘),我注意到上述错误。
有任何想法吗?我认为这与 iphone 在拍摄照片时存储有关相机位置的额外 exif 元数据有关,但是其中一张照片是在纵向模式下拍摄的,并且以某种方式旋转到横向。
我使用的解决方案是按照imageOrientation
属性的要求旋转和翻转图像。这里有一些代码可以解决问题:UIImage fix。
UIImageView 会自动旋转和翻转,因此如果您只是将其显示在屏幕上,这不是问题。
您是对的,手机将旋转元数据与图像一起存储,以指示应以哪种方式旋转以进行显示。这可能是一个 EXIF 标签;它可能是完全不同的东西,Apple 告诉你的都是 UIImage 的形式。
UIImage 在很多方面都是 CGImage 的简单包装。在这种情况下,CGImage 图像是一个“愚蠢”的对象,它只知道/关心原始图像数据;没有像轮换信息那样高级别的东西。UIImage 将其与旋转和其他信息结合在一起,成为一个方便的类。好处之一是 UIImage 自动知道如何使用正确的旋转来绘制自己。
所以黄金基本上可以避免在大多数应用程序中与 CGImage 交互。UIImage 应该做你想做的几乎所有事情,并处理更高级别的旋转信息等。否则,您会遇到大多数图像正确绘制但有些旋转的奇怪情况。