我正在使用AVCaptureDevice从相机捕获图像。在设置会话和捕获图像后,我可以获得NSData *
和NSDictionary *
对象,但是,由于EXIF元数据和数据的分离,当我尝试转换NSData *
时到UIImage *
,并将其放在UIImageView *
中,图片定向错误。
我知道我可以使用很多修复方法来获得正确的图像,我现在正在做,但事实是,当图像分辨率很高时(即3000) * 4000),修复方法很慢,我的iPhone5需要大约500毫秒。在使用仪器运行时间分析器后,主要的时间用于写入数据,这是我猜想的。
所以我想知道我在做正确的事情吗?难道不应该有更容易,更有效的方法来解决这样的问题吗?请帮助我离开这里,非常感谢!
答案 0 :(得分:1)
这可以通过使用ImageIO框架实际旋转图像字节。您想要使用CGImageDestinationCreateWithURL创建图像目标,然后使用CGImageDestinationAddImage添加图像数据及其EXIF数据。
在SO上有几个例子,如this one。
如果您只想显示此图像,则可以使用以下方法从数据创建具有指定旋转的UIImage:
+ (UIImage *)imageWithCGImage:(CGImageRef)imageRef scale:(CGFloat)scale orientation:(UIImageOrientation)orientation