Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.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
Iphone AVCaptureMovieFileOutput在将照片保存到相机卷时导致方向错误_Iphone_Ios_Avfoundation_Avcapturesession_Avcam - Fatal编程技术网

Iphone AVCaptureMovieFileOutput在将照片保存到相机卷时导致方向错误

Iphone AVCaptureMovieFileOutput在将照片保存到相机卷时导致方向错误,iphone,ios,avfoundation,avcapturesession,avcam,Iphone,Ios,Avfoundation,Avcapturesession,Avcam,我对captureStillImageAsynchronouslyFromConnection有一个奇怪的问题。如果在镜像视频时使用jpegStillImageNSDataRepresentation保存图像,则相机卷中的图像将顺时针旋转90度。但是,如果没有镜像,则方向是正确的。 我会发布代码,其他人有这个问题/知道修复方法吗 更新:刚刚运行了一些测试,高度和宽度(640x480)都很好,反映了设备的方向。当我在肖像中拍照时,它会报告UIImageOrientationLeft,镜像时,它会报

我对captureStillImageAsynchronouslyFromConnection有一个奇怪的问题。如果在镜像视频时使用jpegStillImageNSDataRepresentation保存图像,则相机卷中的图像将顺时针旋转90度。但是,如果没有镜像,则方向是正确的。 我会发布代码,其他人有这个问题/知道修复方法吗


更新:刚刚运行了一些测试,高度和宽度(640x480)都很好,反映了设备的方向。当我在肖像中拍照时,它会报告UIImageOrientationLeft,镜像时,它会报告UIImageOrientationLeft

更新2:当我在相机卷中查看保存的照片时,图像的预览方向正确,在照片之间滑动时图像也是如此,但当照片完全加载时,它会旋转90度。这可能是一个镜头滚动的问题吗?(我在4.3.3上)


据报道,2009年iPhone的照片应用程序根本不支持任何镜像方向;当然,他们可能部分修复了这一问题,但在某些情况下仍然存在缺陷(例如,我知道UIImageView在某些情况下无法正确处理
contentStretch
)。这应该很容易测试:只需将该博客中的示例图像加载到相机卷中,看看会发生什么。

为UIImage创建类别,如中所述


在将图像保存到库中之前,对图像调用此方法。

我想知道您是否真的按照此处的假设设置了新创建的图像的方向:

[library writeImageToSavedPhotosAlbum:[image CGImage] orientation: (ALAssetOrientation) [image imageOrientation] completionBlock:completionBlock];
[image imageOrientation]
尤其可能是问题的根源,尤其是在需要演员阵容的情况下

您说您在某处看到了图像方向,是从
[image-imageOrientation]
创建图像后使用的:

NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation: imageDataSampleBuffer];
UIImage *image = [[UIImage alloc] initWithData:imageData];

我想知道您是否假设此元数据位于从
AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:
返回的
imageData中,而实际上该元数据仅包含图像像素数据本身?

若要调试此元数据,您可以在两种模式下输出image.size和imageOrientation,你得到了什么值?刚刚运行了一些测试,高度和宽度(640x480)都很好,反映了设备的方向。当我在肖像中拍照时,它会报告UIImageOrientationLeft,镜像时,它会报告UIImageOrientationLeftMirrored。我使用的代码是AVCam 1.0和1.2以及我自己的代码的混合。我想这就是为什么不能在AVCam 1.2中保存照片的原因吧?愚蠢的为什么我必须将照片保存为镜像?我所要做的就是保存镜像视频的照片。有没有一种简单的方法来拍摄照片并将其垂直翻转,然后再保存到相机胶卷上?@WDyson:当然,请参阅前面关于这些内容的问题。奇怪的事情。我的图片现在都被翻转180度了。你必须修改它来做你想做的事情。虽然逻辑应该是相似的。我自由地编辑了你的答案,只是链接到我以前关于图像旋转的答案,而不是逐字复制它-因为剽窃,因为我只是从14小时前我在评论中贴到我的答案的链接中复制了你的答案。我没有从你的答案中复制,这个代码在互联网上到处都是。我已经在我的几个项目中使用过它。有点自负,认为你的答案是我唯一可能遇到的地方,不是吗?哇,人们在互联网上复制了我的代码?漂亮。注意UIImageOrientation可以转换为ALAssetOrientation。啊,好吧,太好了!它得到了正确的值吗?如上所述,我想知道元数据是否进入
imageData
,然后被解析并添加到
image
。如果我理解你的问题,我只是想跟踪数据在系统中的起始位置和移动位置,因为它似乎没有到达需要到达的位置。
NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation: imageDataSampleBuffer];
UIImage *image = [[UIImage alloc] initWithData:imageData];