Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何撰写一篇“文章”;对",;从AVCaptureDevice捕获NSData和NSDictionary的定向UIImage?_Ios_Iphone_Uiimageview_Uiimage_Uiimageorientation - Fatal编程技术网

Ios 如何撰写一篇“文章”;对",;从AVCaptureDevice捕获NSData和NSDictionary的定向UIImage?

Ios 如何撰写一篇“文章”;对",;从AVCaptureDevice捕获NSData和NSDictionary的定向UIImage?,ios,iphone,uiimageview,uiimage,uiimageorientation,Ios,Iphone,Uiimageview,Uiimage,Uiimageorientation,我正在使用AVCaptureDevice从相机中捕获图像。设置会话并捕获图像后,我可以获得一个NSData*和一个NSDictionary*对象,但是,由于EXIF元数据和数据分离,当我试图将NSData*转换为UIImage*,并将其放在UIImageView*中时,图像方向错误 我知道我可以使用很多修复方法来获得正确的图像,我现在正在这样做,但问题是,当图像分辨率很高(即3000*4000)时,修复方法很慢,在我的iPhone5上大约需要500毫秒。在使用仪器运行时间分析器之后,大部分时间都

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

我知道我可以使用很多修复方法来获得正确的图像,我现在正在这样做,但问题是,当图像分辨率很高(即3000*4000)时,修复方法很慢,在我的iPhone5上大约需要500毫秒。在使用仪器运行时间分析器之后,大部分时间都花在写数据上,我想这是不可避免的


所以我想知道我做的对吗?难道不应该有一种更简单更有效的方法来解决这样的问题吗?请帮我离开这里,非常感谢

这在不使用ImageIO框架实际旋转图像字节的情况下是可能的。您希望使用创建图像目标,然后使用添加图像数据及其EXIF数据

这里有几个例子,比如

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

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

谢谢Tark,您提到的方法需要将图像保存到文件中,对吗?如果我不想保存它,我只想在UIImageView中显示它呢?在这种情况下,您需要做的就是从指定EXIF元数据中给定旋转的数据创建UIImage。我用你应该看到的方法更新了答案。我猜这就是答案。谢谢你的帮助!