0

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

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

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

4

2 回答 2

3

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

UIImageView 会自动旋转和翻转,因此如果您只是将其显示在屏幕上,这不是问题。

于 2009-04-19T18:17:01.803 回答
0

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

UIImage 在很多方面都是 CGImage 的简单包装。在这种情况下,CGImage 图像是一个“愚蠢”的对象,它只知道/关心原始图像数据;没有像轮换信息那样高级别的东西。UIImage 将其与旋转和其他信息结合在一起,成为一个方便的类。好处之一是 UIImage 自动知道如何使用正确的旋转来绘制自己。

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

于 2009-04-19T23:14:57.953 回答