将照片保存到“相机胶卷”时,AVCaptureMovieFileOutput导致方向错误
||
我对captureStillImageAsynchronouslyFromConnection有一个奇怪的问题。如果在镜像视频时使用jpegStillImageNSDataRepresentation保存图像,则会将相机胶卷中的图像顺时针旋转90度。但是,如果未镜像,则方向很好。
我将发布代码,其他人有这个问题/知道如何解决吗?
更新:只需运行一些测试,高度和宽度(640x480)很好,可以反映设备的方向。当我拍摄人像照片时,它报告UIImageOrientationLeft,而当镜像时,报告UIImageOrientationLeftMirrored。
更新2:当我在相机胶卷中查看保存的照片时,图像的预览方向正确,当在照片之间滑动时,图像的预览方向也正确,但是当照片完全加载后,图像旋转90度。这可能是相机胶卷问题吗? (我在4.3.3上)
- (void) captureImageAndSaveToCameraRoll
{
AVCaptureConnection *stillImageConnection = [AVCamUtilities connectionWithMediaType:AVMediaTypeVideo fromConnections:[[self stillImageOutput] connections]];
if ([stillImageConnection isVideoOrientationSupported])
[stillImageConnection setVideoOrientation:[self orientation]];
[[self stillImageOutput] captureStillImageAsynchronouslyFromConnection:stillImageConnection
completionHandler:^(CMSampleBufferRef imageDataSampleBuffer, NSError *error) {
ALAssetsLibraryWriteImageCompletionBlock completionBlock = ^(NSURL *assetURL, NSError *error) {
if (error) {
if ([[self delegate] respondsToSelector:@selector(captureManager:didFailWithError:)]) {
[[self delegate] captureManager:self didFailWithError:error];
}
}
};
if (imageDataSampleBuffer != NULL) {
NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
UIImage *image = [[UIImage alloc] initWithData:imageData];
[library writeImageToSavedPhotosAlbum:[image CGImage]
orientation:(ALAssetOrientation)[image imageOrientation]
completionBlock:completionBlock];
[image release];
[library release];
}
else
completionBlock(nil, error);
if ([[self delegate] respondsToSelector:@selector(captureManagerStillImageCaptured:)]) {
[[self delegate] captureManagerStillImageCaptured:self];
}
}];
}
没有找到相关结果
已邀请:
3 个回复
桑娠贯涤
特别是
可能是问题的根源,特别是需要强制转换时... 您说您正在某处看到图像方向,是使用creating2ѭ之后创建的:
我想知道您是否假设此元数据实际上是在仅包含图像像素数据的情况下从“ 6”返回的“ 5”中?
膏焦凑
)。这应该足够容易测试:将博客中的样本图像加载到相机胶卷中,然后看看会发生什么。
赐黄