0

我正在使用 Apple 的AVCam 源代码来创建一个自定义相机,它的工作方式就像一个魅力,问题是一旦我用它拍摄了视频或图像,然后将其检入照片库,它的方向就会变成横向(即使我捕捉到它是纵向的)。我为此搜索了很多,但找不到解决方法。有什么帮助吗?

需要注意的是,我的应用程序仅支持纵向,并且只能纵向捕获。

更新:

AVCaptureConnection *captureConnection = ...
if ([captureConnection isVideoOrientationSupported])
{
    AVCaptureVideoOrientation orientation = AVCaptureVideoOrientationPortrait;
    [captureConnection setVideoOrientation:orientation];
}

这行不通。

4

1 回答 1

0

要捕获图像,您也应该设置方向。当您将图像保存到磁盘时,您应该使用

writeImageToSavedPhotosAlbum:orientation:completionBlock:

功能并在那里设置正确的“方向”参数。

用法:https ://developer.apple.com/library/ios/documentation/AssetsLibrary/Reference/ALAssetsLibrary_Class/index.html#//apple_ref/occ/instm/ALAssetsLibrary/writeImageToSavedPhotosAlbum:orientation:completionBlock :

目标 C 示例:

// Flash set to Auto for Still Capture
    [CameraViewController setFlashMode:AVCaptureFlashModeAuto
                             forDevice:[[self videoDeviceInput] device]];

    // Capture a still image.
    [[self stillImageOutput] captureStillImageAsynchronouslyFromConnection:[[self stillImageOutput] connectionWithMediaType:AVMediaTypeVideo]
                                                         completionHandler:^(CMSampleBufferRef imageDataSampleBuffer, NSError *error) {

        if (imageDataSampleBuffer) {
            self.imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];

            [[[ALAssetsLibrary alloc] init] writeImageToSavedPhotosAlbum:image.CGImage
                                                             orientation:(ALAssetOrientation)[image imageOrientation]
                                                         completionBlock:^(NSURL *assetURL, NSError *error) {
                                                             if(error == nil) {
                                                                 NSLog(@"PHOTO SAVED - assetURL: %@", assetURL);
                                                             } else {
                                                                 NSLog(@"ERROR : %@",error);
                                                             }
                                                         }];
于 2014-12-18T14:37:10.777 回答