如何使用从AVCaptureDevice捕获的NSData和NSDictionary构建一个“正确”的UIImage?

时间:2013-12-05 07:25:30

标签: ios iphone uiimageview uiimage uiimageorientation

我正在使用AVCaptureDevice从相机捕获图像。在设置会话和捕获图像后,我可以获得NSData *NSDictionary *对象,但是,由于EXIF元数据和数据的分离,当我尝试转换NSData *时到UIImage *,并将其放在UIImageView *中,图片定向错误。

我知道我可以使用很多修复方法来获得正确的图像,我现在正在做,但事实是,当图像分辨率很高时(即3000) * 4000),修复方法很慢,我的iPhone5需要大约500毫秒。在使用仪器运行时间分析器后,主要的时间用于写入数据,这是我猜想的。

所以我想知道我在做正确的事情吗?难道不应该有更容易,更有效的方法来解决这样的问题吗?请帮助我离开这里,非常感谢!

1 个答案:

答案 0 :(得分:1)

这可以通过使用ImageIO框架实际旋转图像字节。您想要使用CGImageDestinationCreateWithURL创建图像目标,然后使用CGImageDestinationAddImage添加图像数据及其EXIF数据。

在SO上有几个例子,如this one

如果您只想显示此图像,则可以使用以下方法从数据创建具有指定旋转的UIImage:

+ (UIImage *)imageWithCGImage:(CGImageRef)imageRef scale:(CGFloat)scale orientation:(UIImageOrientation)orientation