gpt4 book ai didi

iphone - 将照片保存到相机胶卷时,AVCaptureMovieFileOutput 导致方向错误

转载 作者:可可西里 更新时间:2023-11-01 04:48:55 25 4
gpt4 key购买 nike

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

更新:刚刚进行了一些测试,高度和宽度 (640x480) 都很好并且反射(reflect)了设备的方向。当我拍摄纵向照片时,它会报告 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];
}
}];
}

最佳答案

我想知道您是否真的像您在这里假设的那样设置了新创建的图像的方向:

[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 中,而实际上它仅包含图像像素数据本身?

关于iphone - 将照片保存到相机胶卷时,AVCaptureMovieFileOutput 导致方向错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6351642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com