【问题标题】:iPhone camera pics come up rotated -- CGAffineTransformInvert: singular matrixiPhone 相机图片旋转出现 - CGAffineTransform Invert:奇异矩阵
【发布时间】:2009-04-19 17:13:40
【问题描述】:

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

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

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

【问题讨论】:

    标签: iphone objective-c cocoa-touch uiimage


    【解决方案1】:

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

    一个 UIImageView 会自动旋转和翻转,所以如果你只是把它显示在屏幕上也不是问题。

    【讨论】:

    • 似乎没有其他人报告过这个问题,但是在我的 iOS 5 应用程序使用以纵向模式拍摄的照片时,此代码在 CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, width, height), imgRef); 上对我来说崩溃了(但还没有在横向时)。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-10-14
      • 1970-01-01
      • 1970-01-01
      • 2011-07-01
      • 1970-01-01
      • 2014-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多